Một thời gian trước, tôi đã làm việc trên một dự án MS-SQL và tôi nhớ một điều "IS IN". Tôi đã thử nó trên một dự án MySQL và nó đã không hoạt động.MySQL "IS IN" tương đương?
Có tương đương không? Cách giải quyết?
Dưới đây là các truy vấn đầy đủ Tôi cố gắng để chạy:
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
Nó khá lớn ... nhưng phần mà tôi quan tâm là:
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)
Mà về cơ bản nói rằng tôi muốn các sản phẩm nằm trong "top 10" của truy vấn phụ đó.
Bạn sẽ đạt được điều đó như thế nào với MySQL (trong khi cố gắng hiệu quả)?
Không phải là nó giống như 'trong' trong MySQL? – armandino
IN là những gì bạn đang tìm kiếm, nhưng điều này thực sự cần được triển khai bằng cách sử dụng JOIN thay vì truy vấn phụ. –
Vui lòng thông báo cho "THAM GIA". Bởi vì anys mysql không cho phép "LIMIT" bên trong "IN". Vì vậy, tôi có thể phải làm JOIN? –