6


0

MySQL「IS IN」と同等ですか?

少し前に、私はMS-SQLプロジェクトに取り組み、「IS IN」のことを覚えています。 MySQLプロジェクトで試してみましたが、うまくいきませんでした。

同等のものはありますか? 回避策

ここに私が実行しようとしている完全なクエリがあります:

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

それはかなり大きいです…​ しかし、私が興味を持っている部分は:

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)

これは基本的に、そのサブクエリの「トップ10」に製品が含まれるようにしたいということです。

MySQLでそれをどのように達成しますか(効率を上げようとしています)?

2 Answer


15


「IN」を探しています:

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


2


「IN」を試してください(「is」はありません)