使用 returns 两个值的子查询时违反基数

Cardinality violation when using a subquery that returns two values

我已经创建了一个 sql 查询草图是这样的

select *
from   A
where  A.id in (select  B.id1, B.id2 from B);

其中主要 select returns 那些 A.id 与 B.id1 或 B.id2 一致的值。

显然此解决方案不起作用,因为基数在 where 子句中不匹配。我该如何克服这个问题?

一个解决方案是创建两个子查询,一个用于 B.id1,一个用于 B.id2,但由于我的子查询比本例中的要长得多,所以我正在寻找更优雅的解决方案。

我正在使用 Mysql

编辑 1 只要语法比使用两个子查询更简单,我就可以使用 joins

编辑 2 感谢@NullSoulException。我尝试了第一个解决方案并按预期工作!!

像下面这样的东西应该可以解决问题。

select * 
From table1 a , (select id1 , id2 from table2 ) b 
where (a.id = b.id1) or  (a.id = b.id2)

或者您可以通过给加入的 table 一个别名来使用相同的 table 加入两次。

select * from table1 a 
INNER JOIN table2 b1 on a.id = b1.id1
INNER JOIN table2 b2 on a.id = b2.id2

请根据您的 datasets/tables..

测试以上内容