我创建了一个sql查询,草图就像这样
select *
from A
where A.id in (select B.id1, B.id2 from B);
其中主选择返回A.id与B.id1或B.id2重合的值。
显然,这个解决方案并不起作用,因为基数在where子句中并不匹配。我怎样才能克服这个问题?
一个解决方案是制作两个子查询,一个用于B.id1,另一个用于B.id2,但由于我的子查询比这个例子长得多,所以我正在寻找更优雅的解决方案。
我正在使用Mysql
编辑1 只要语法比使用两个子查询更简单,我就没有使用连接的问题
编辑2 谢谢@NullSoulException。我尝试了第一个解决方案并按预期工作!!
答案 0 :(得分:1)
像下面这样的东西应该可以解决问题。
select *
From table1 a , (select id1 , id2 from table2 ) b
where (a.id = b.id1) or (a.id = b.id2)
或者您可以通过为连接表提供别名来连接同一个表两次。
select * from table1 a
INNER JOIN table2 b1 on a.id = b1.id1
INNER JOIN table2 b2 on a.id = b2.id2
请针对您的数据集/表格测试上述内容。