この質問は、 MySQL を使用して 2 つのカンマ区切りの文字列リストを比較する方法の拡張です。
TASKS_DONE
2つの列user_id
とtask_id
(INT)を持つテーブルがあります。これらのコードは、ユーザーが実行するタスクを表すために使用されます。
個別のテーブルは、タスクとユーザーの詳細を維持するために使用されますTASKS
。USERS
私の要件は、ユーザーが一連のタスクを実行したかどうかを確認することです (たとえば2, 3, 5
)。現在、次のクエリがあります。
select * from USERS u
where
(
select SUM( IF(task_id in (2, 3, 5), 1, 0) )
from TASKS_DONE td
where td.user_id=u.user_id
group by td.user_id
) = 3
カウント (3
この場合) はクエリに動的に供給されます。このアプローチの問題は、ユーザーが同じタスクを 2 回実行した場合、タスクの両方のインスタンスがカウントに含まれることです。しかし、私はの別個のセットだけを考慮する必要がありますtask_id
助けてください。