Sql 检查SELECT子句中的另一个表中是否存在值
我想查询表1中的名称,并查找表2中是否存在名称。我有以下查询,但它似乎不起作用。有什么建议我做错了什么Sql 检查SELECT子句中的另一个表中是否存在值,sql,postgresql,Sql,Postgresql,我想查询表1中的名称,并查找表2中是否存在名称。我有以下查询,但它似乎不起作用。有什么建议我做错了什么 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”/“unspecial”。我正在使用postgres
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”/“unspecial”。我正在使用postgres。在子查询中将中的替换为中的。我将使用EXIST而不是in:
select a.name,
case
when a.name in (select distinct name from table2) then 'common'
else 'not common'
end as new
from table1 a
select
A.name,
CASE
WHEN EXISTS (select *
from table2 B
where B.name = A.name)
THEN 'common'
ELSE 'not common'
END
from
table1 A
在SELECT案例中使用子查询将花费更多。使用左连接代替,如下所示
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
CASE
表达式中使用的suquery在语法上不正确。执行查询时会出现什么错误?在某些情况下会产生重复的值。如果我也需要从表2中的另一列(比如Date)中获取值,那么如果名称在两个表中都是通用的,则结果中应显示日期值以及“common”/“Not common”(通用)。