我想查询table1中的名称,还要查找table2中是否存在名称。我有以下查询但它似乎不起作用。有什么建议我做错了吗?
select A.name,
CASE WHEN A.name in (select B.name in table2 B)
THEN 'common'
ELSE 'not common'
END
from table1 A
请注意,我必须从select子句本身获得“common”/“uncommon”。我正在使用postgres。
答案 0 :(得分:4)
我会使用EXIST而不是IN:
select
A.name,
CASE
WHEN EXISTS (select *
from table2 B
where B.name = A.name)
THEN 'common'
ELSE 'not common'
END
from
table1 A
答案 1 :(得分:3)
在SELECT CASE中使用子查询会花费更多。使用左连接,如下面的
select A.name,
CASE WHEN B.name IS NOT NULL
THEN 'common'
ELSE 'not common'
END
from table1 A
left join table2 B
on A.name = B.name
答案 2 :(得分:0)
只需在子查询中将in
替换为from
。
答案 3 :(得分:0)
选择a.name,a.name中的情况(从table2中选择不同的名称)然后' common'别的'不常见'从table1 a结束为新的