次のようなクエリがあります。
SELECT products.* FROM products
WHERE products.code = 'search word' OR products.id IN(SELECT product_names.product_id
FROM product_names
WHERE MATCH (product_names.name)
AGAINST ('+search* +word*' IN BOOLEAN MODE)
ORDER BY product_names.sorting_field)
ORDER BY ???
メインクエリの順序をWHERE IN()
. FIELD
またはFIND_IN_SET
から何が返されているのかわからないため、使用できないようですMATCH AGAINST
。
などを試してみORDER BY FIELD(products.id, product_names.product_id)
ましたが、どうすればうまくいくのかわかりませんでした。
実際には、私のクエリはもっと長くて複雑です。これはやや擬似的なバージョンです。MATCH AGAINST
サブクエリの外側を実行できません。