我有两列数据需要相互比较:
第1列:
People
Trust
Corporate第2列:
People
People
People
Company
Corporate
Corporate
Corporate
Company
Trust
Trust 第1列比第2列短,但它是要与第2列比较的标准数据。我想找出第2列中哪些值不在第1列中。
这样的结果就是我想要的:
People TRUE
People TRUE
People TRUE
Company FALSE
Corporate TRUE
Corporate TRUE
Corporate TRUE
Company FALSE
Trust TRUE
Trust TRUE这些列位于两个不同的表中。我使用的是SQL。有什么建议吗?
发布于 2016-10-06 22:28:12
使用CASE WHEN EXISTS
select Column2,
case
when exists (select Column1 from Table1 T1 where T1.Column1 = Column2)
then 'TRUE'
else 'FALSE'
from Table2发布于 2016-10-06 22:37:15
其他答案都是正确的,但我总是发现使用LEFT JOIN更快:(我不知道这是我的看法,还是它真的更具性能)
SELECT
T2.COLUMN,
CASE WHEN T1.COLUMN IS NULL THEN 'FALSE' ELSE 'TRUE' END EXISTENT
FROM TABLE_2 T2
LEFT OUTER JOIN TABLE_1 T1
ON T2.COLUMN = T1.COLUMN发布于 2016-10-06 22:57:35
答案都是正确的,但如果您想要实际的true或false而不是字符串,您可以将其转换为位字段:
declare @temp1 table (column1 varchar(50))
declare @temp2 table (column1 varchar(50))
insert into @temp1 (column1) values ('people')
insert into @temp1 (column1) values ('trust')
insert into @temp1 (column1) values ('corporate')
insert into @temp2 (column1) values ('People')
insert into @temp2 (column1) values ('People')
insert into @temp2 (column1) values ('People')
insert into @temp2 (column1) values ('Company')
insert into @temp2 (column1) values ('Corporate')
insert into @temp2 (column1) values ('Corporate')
insert into @temp2 (column1) values ('Corporate')
insert into @temp2 (column1) values ('Company')
insert into @temp2 (column1) values ('Trust')
insert into @temp2 (column1) values ('Trust')
select t2.column1, convert(bit, case when t1.column1 is null then 0 else 1 end)
from @temp2 t2
left join @temp1 t1 on t2.column1 = t1.column1https://stackoverflow.com/questions/39898628
复制相似问题