MySQL
tidak dapat mengganti tabel yang memimpin dan yang digerakkan di IN
ayat. Ini akan dikoreksi di 6.0
.
Untuk saat ini, Anda dapat menulis ulang seperti ini (memerlukan 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
Karena Anda menggunakan EAV
model Anda mungkin ingin membuat indeks unik pada (attribute_name, item_id)
dalam hal ini Anda dapat menggunakan gabungan biasa:
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'