質問があります
SELECT * FROM my_tbl1
WHERE id IN ( SELECT id1 FROM my_tbl2 WHERE user_id=2)
OR id IN ( SELECT id2 FROM my_tbl2 WHERE user_id=2)
OR id IN ( SELECT id3 FROM my_tbl2 WHERE user_id=2)
OR id IN ( SELECT id4 FROM my_tbl2 WHERE user_id=2)
OR id IN ( SELECT id5 FROM my_tbl2 WHERE user_id=2)
.......
OR id IN ( SELECT id22 FROM my_tbl2 WHERE user_id=2)
id1とid2などid22 はmy_tbl2の列です。これにより、OR句を22回記述し、my_tbl2を何度もヒットしています。
GROUP_CONCATを試しましたが、カンマで区切られた値の文字列のみが返されます。これは機能しません
以下のクエリは役に立たないということです
SELECT * FROM my_tbl1
WHERE id IN ( SELECT GROUP_CONCAT(id1,id2,id3..id22) FROM my_tbl2 WHERE user_id=2)
他の考えでは、IN CLAUSEを使用したサブクエリが心配です
SELECT * FROM my_tbl1 a
WHERE EXISTS ( SELECT 1 FROM my_tbl2 b
WHERE b.user_id=2 AND a.id IN (b.id1,b.id2,b.id3...b.id22 )
これを簡単にする方法はありますか?
ありがとうございました