MySQL "IST" äquivalent?

Vor einer Weile arbeitete ich auf einer MS-SQL Projekt und ich erinnere mich an die "IN" Sache. Ich versuchte es auf eine MySQL-Projekt und es hat nicht funktioniert.

Gibt es ein äquivalent? Workaround?

Hier ist die vollständige Abfrage, die ich versuche zu laufen:

SELECT *
FROM product_product, product_viewhistory, product_xref
WHERE 
(
(product_viewhistory.productId = product_xref.product_id_1 AND product_xref.product_id_2 = product_product.id)
OR 
(product_viewhistory.productId = product_xref.product_id_2 AND product_xref.product_id_1 = product_product.id)
)
AND product_product.id IS IN 
    (SELECT DISTINCT pvh.productId
    FROM product_viewhistory AS pvh
    WHERE pvh.cookieId = :cookieId
    ORDER BY pvh.viewTime DESC
    LIMIT 10)
AND product_viewhistory.cookieId = :cookieId
AND product_product.outofstock='N'
ORDER BY product_xref.hits DESC
LIMIT 10

Es ist ziemlich groß ... aber der Teil, ich bin sehr interessiert, ist:

AND product_product.id IS IN 
    (SELECT DISTINCT pvh.productId
    FROM product_viewhistory AS pvh
    WHERE pvh.cookieId = :cookieId
    ORDER BY pvh.viewTime DESC
    LIMIT 10)

Die im Grunde sagt, ich möchte die Produkte werden in die "top 10" der sub-Abfrage.

Wie würden Sie erreichen, dass Sie mit MySQL (während Sie versuchen, effizient zu sein)?

Ist es nicht das gleiche als 'in' in MySQL?
IN ist, was du suchst, aber sollte dies wirklich umgesetzt werden, mithilfe einer JOIN statt Unterabfrage.
Beraten Sie bitte auf den "BEITRETEN". Da sowieso mysql nicht erlaubt, die "GRENZE" innerhalb "IN". Also ich kann an BEITRETEN?
ich denke, dass ich es herausgefunden, danke

InformationsquelleAutor Nathan H | 2010-04-16

Schreibe einen Kommentar