我有一个查询
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中的列。这让我写了 22 次OR子句并一次又一次地点击 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 )
有什么办法可以简化这个吗?
谢谢你