これらの製品の結果は、別のテーブルインデックスに存在するかどうかに基づいて取得されます。私はそれらが存在するすべてのインスタンスの数を取得しようとしているので、関連性によって結果を並べ替えることができます。私が試してみると、変数@priorityを0として返すようです。複数のEXIST()ステートメントを含むクエリを使用してインデックスが存在する回数をカウントします。
おそらく、結合ステートメントを使用する方が良いでしょうか?
ありがとうございました。私のMySQLのクエリは次のとおりです:
SELECT `products` . * , @priority
FROM `products`
LEFT JOIN productstypes_index ON productstypes_index.product_id = products.id
WHERE (
EXISTS (
SELECT *
FROM `productstypes_index`
WHERE `productstypes_index`.`product_id` = `products`.`id`
AND `productstypes_index`.`_type_id` = '1'
)
AND (
(
(
EXISTS (
SELECT @priority := COUNT(*)
FROM `producthashtags_index`
WHERE `producthashtags_index`.`product_id` = `products`.`id`
AND `producthashtags_index`.`producthashtag_id` = '43'
)
)
AND (
EXISTS (
SELECT @priority := COUNT(*)
FROM `producthashtags_index`
WHERE `producthashtags_index`.`product_id` = `products`.`id`
AND `producthashtags_index`.`producthashtag_id` = '11'
)
)
)
)
)
ORDER BY `updated_at` DESC;
MySQLはEXISTSサブクエリのSELECTリストを無視するので、そこに入力したものと違いはありません。 –