Эквивалентный MySQL “IS IN”?

Только что я работал над проектом MS-SQL, и я помню, "НАХОДИТСЯ В" вещи. Я попробовал его на проекте 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 (при попытке быть эффективными)?

6
задан Remus Rusanu 16 April 2010 в 01:26
поделиться

2 ответа

Вы ищете 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)
15
ответ дан 8 December 2019 в 13:45
поделиться

Попробуйте IN (без "есть")

2
ответ дан 8 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: