我正在尝试确定在SQL中是否有更好的方法来执行此操作。我的目标是运行一个查询,该查询返回两个用于另一个查询的值。见下文
select *
from table2
where col1 =
( select col1
from table1
where id = 123 )
and col2 =
( select col2
from table1
where id = 123 );
有没有办法通过执行where
子句来检查两个嵌套查询的值,或者通过运行第一个查询并以某种方式设置col1
和{{的值来简化此代码1}}我可以在第二个查询中使用的变量吗?
答案 0 :(得分:4)
你可以做到
select *
from table2
where (col1, col2) = (select col1, col2
from table1
where id = 123)
答案 1 :(得分:1)
SELECT DISTINCT a.*
FROM table2 a
INNER JOIN table1 b
ON a.col1 = b.col1
AND a.col2 = b.col2
WHERE b.id = 123
答案 2 :(得分:0)
您可以简单地使用以下查询
select t2.* from table2 t2,table1 t1 where t1.col1=t2.col1 and
t1.col2=t2.col2 and t1.id=123
答案 3 :(得分:0)
好像你已经倒退了。既然你确切地知道你想从table1中得到什么(所以,大概是,查询更小),你应该首先从table1获取数据,然后从table2加入相关的行:
select table2.*
from table1
inner join table2
on table2.col1 = table1.col1
and table2.col2 = table1.col2
where table1.id = 123