MySQL
IN
の先行テーブルと被駆動テーブルを切り替えることはできません 句。これは6.0
で修正される予定です。
。
今のところ、次のように書き直すことができます(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
EAV
を使用しているため (attribute_name, item_id)
に一意のインデックスを作成したいモデル この場合、プレーン結合を使用できます:
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'