MySQL
không thể chuyển đổi đầu và bảng điều khiển trong IN
mệnh đề. Điều này sẽ được sửa trong 6.0
.
Hiện tại, bạn có thể viết lại nó như thế này (yêu cầu JOIN
):
SELECT i.*
FROM (
SELECT DISTINCT item_id
FROM item_attributes a
WHERE a.attribute_name = 'SomeAttribute'
AND a.attribute_value = 'SomeValue'
) ai
JOIN items i
ON i.id = ai.item_id
Vì bạn đang sử dụng EAV
mô hình mà bạn có thể muốn tạo một chỉ mục duy nhất trên (attribute_name, item_id)
trong trường hợp đó, bạn có thể sử dụng một phép nối đơn giản:
SELECT i.*
FROM item_attributes ai
JOIN items i
ON i.id = ai.item_id
WHERE a.attribute_value = 'SomeValue'
AND a.attribute_name = 'SomeAttribute'