怎么用sql比较2个表中1个相似字段,将不同的值挑出来

时间:2022-04-28 15:08:19
表1的col1和表2的col2都是16个字符的编码,col1中有100行数据,col2中有200行数据(其中100行和col1是相同的),怎么把col2中另100行数据挑出来。


就是把col2中和col1不同的值挑出来

12 个解决方案

#1


select * from t  where col1<>col2???

#2


引用 1 楼 u010412956 的回复:
select * from t  where col1<>col2???


看成了一个表了。。

2个表 是否有关联字段可关联??

#3


2个表都是就1个字段

我就是把2套编码放到这2个表里,想把不同的挑出来

#4


这 更简单了,

select col2
  from t2
minus
select col1 from t1

#5


表1的col1和表2的col2都是16个字符的编码,col1中有100行数据,col2中有200行数据(其中100行和col1是相同的),怎么把col2中另100行数据挑出来。

100~200行数据,就不考虑效率了

select * from 表2 where col2 not in(select col1 from 表1)

#6


同意楼上的意见

#7


引用 4 楼 u010412956 的回复:
这 更简单了,

select col2
  from t2
minus
select col1 from t1


同意。。。

#8


引用 5 楼 di74jun 的回复:
表1的col1和表2的col2都是16个字符的编码,col1中有100行数据,col2中有200行数据(其中100行和col1是相同的),怎么把col2中另100行数据挑出来。

100~200行数据,就不考虑效率了

select * from 表2 where col2 not in(select col1 from 表1)

同意此方法

#9


select * from 表2 where col2 not in(select col1 from 表1 where 表1.col1=表2.col2);

#10


引用 8 楼 szjol 的回复:
Quote: 引用 5 楼 di74jun 的回复:

表1的col1和表2的col2都是16个字符的编码,col1中有100行数据,col2中有200行数据(其中100行和col1是相同的),怎么把col2中另100行数据挑出来。

100~200行数据,就不考虑效率了

select * from 表2 where col2 not in(select col1 from 表1)

同意此方法

我不同意这个方法。如果表1,2里面有null的话,查不出来

#11


引用 10 楼 cyuyanzhiwen 的回复:
Quote: 引用 8 楼 szjol 的回复:

Quote: 引用 5 楼 di74jun 的回复:

表1的col1和表2的col2都是16个字符的编码,col1中有100行数据,col2中有200行数据(其中100行和col1是相同的),怎么把col2中另100行数据挑出来。

100~200行数据,就不考虑效率了

select * from 表2 where col2 not in(select col1 from 表1)

同意此方法

我不同意这个方法。如果表1,2里面有null的话,查不出来


表2.col2 is null 与 表1.col1  is null 不算相同吧

#12


子集方式,用minus和not in都可以吧,作个记号

#1


select * from t  where col1<>col2???

#2


引用 1 楼 u010412956 的回复:
select * from t  where col1<>col2???


看成了一个表了。。

2个表 是否有关联字段可关联??

#3


2个表都是就1个字段

我就是把2套编码放到这2个表里,想把不同的挑出来

#4


这 更简单了,

select col2
  from t2
minus
select col1 from t1

#5


表1的col1和表2的col2都是16个字符的编码,col1中有100行数据,col2中有200行数据(其中100行和col1是相同的),怎么把col2中另100行数据挑出来。

100~200行数据,就不考虑效率了

select * from 表2 where col2 not in(select col1 from 表1)

#6


同意楼上的意见

#7


引用 4 楼 u010412956 的回复:
这 更简单了,

select col2
  from t2
minus
select col1 from t1


同意。。。

#8


引用 5 楼 di74jun 的回复:
表1的col1和表2的col2都是16个字符的编码,col1中有100行数据,col2中有200行数据(其中100行和col1是相同的),怎么把col2中另100行数据挑出来。

100~200行数据,就不考虑效率了

select * from 表2 where col2 not in(select col1 from 表1)

同意此方法

#9


select * from 表2 where col2 not in(select col1 from 表1 where 表1.col1=表2.col2);

#10


引用 8 楼 szjol 的回复:
Quote: 引用 5 楼 di74jun 的回复:

表1的col1和表2的col2都是16个字符的编码,col1中有100行数据,col2中有200行数据(其中100行和col1是相同的),怎么把col2中另100行数据挑出来。

100~200行数据,就不考虑效率了

select * from 表2 where col2 not in(select col1 from 表1)

同意此方法

我不同意这个方法。如果表1,2里面有null的话,查不出来

#11


引用 10 楼 cyuyanzhiwen 的回复:
Quote: 引用 8 楼 szjol 的回复:

Quote: 引用 5 楼 di74jun 的回复:

表1的col1和表2的col2都是16个字符的编码,col1中有100行数据,col2中有200行数据(其中100行和col1是相同的),怎么把col2中另100行数据挑出来。

100~200行数据,就不考虑效率了

select * from 表2 where col2 not in(select col1 from 表1)

同意此方法

我不同意这个方法。如果表1,2里面有null的话,查不出来


表2.col2 is null 与 表1.col1  is null 不算相同吧

#12


子集方式,用minus和not in都可以吧,作个记号