我想通过为嵌套查询分配“变量名”来重写以下查询。
select lastname
from table2
where firstname = (select name from table1 where val="whatever")
我希望查询看起来像这样:
( select name
from table1
where val = "whatever") as retrieved_name;
select lastname
from table2
where firstname = retrieved_name
是否可以在纯SQL中使用?
答案 0 :(得分:3)
是否可以在纯SQL中使用?
否强>
您没有带有“纯SQL”的变量。你可以使用Oralce-PL \ SQL等变量。
答案 1 :(得分:1)
排序,如果您愿意使用join
代替子选项而您是not using MySQL则可以使用CTE(公用表格式):
with retrieved_name as (
select name
from table1
where val = "whatever"
)
select lastname
from table2 t2
join retrieved_name t1
on t2.firstname = t1.name
as_horse_with_no_name指出这与:
相同select lastname
from table2 t2
join ( select name
from table1
where val = "whatever" ) t1
on t2.firstname = t1.name
我实际上更喜欢第二个例子的内联视图而不是CTE,除非查询是荒谬的,但这只是个人偏好。
答案 2 :(得分:0)
你可以这样做
select name as retrieved_name from table1 where val="whatever");
select lastname from table2 where firstname=retrieved_name