我有2张桌子
table : tab1
id serial primary key
val integer
和
table : tab2
id serial primary key
val2 integer
现在我尝试了这个查询
select id, (select id from tab2) as id2 from tab1
工作正常。但是当我尝试在id2
子句中使用where
时,它会给出错误。
select id, (select id from tab2) as id2 from tab1 where id2 = id
答案 0 :(得分:1)
除非我不明白,否则它应该如此简单:
select T1.id
, T2.id as id2
from tab1 T1
join tab2 T2
ON T1.id = T2.id
根据评论进行修改
我对mysql
语法不是很熟悉,但是你不能把查询放在子查询中吗?像:
select *
from (select id, (select id from tab2) as id2 from tab1) a
where a.id = a.id2
答案 1 :(得分:1)
根据OP' comment试试这个
select * from (
select arr, unnest('{1,2,3}'::int[]) as val
from tab1
)t
where val = any(arr)
答案 2 :(得分:0)
您不能在select
子句中使用where
语句中的别名。在您的查询中,id2
是别名列名称。因此,您无法使用where id2 = id
。但你可以使用
select id, (select id from tab2) as id2
from tab1 where id = (select id from tab2);
或使用JOIN查询。
select tab1.id,tab2.id
from tab1, tab2
where tab1.id = tab2.id;