使用带有纯SQL的变量

时间:2012-05-06 12:17:19

标签: sql

我想通过为嵌套查询分配“变量名”来重写以下查询。

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中使用?

3 个答案:

答案 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