求一条sql语句怎么写, 一个表中的字段不等于另一个表中任意一个id

时间:2022-12-18 15:36:25
假设有如下表
表a
id name class
1  白菜  1
2  大米  0
3  西瓜  2
4  槟榔  3

表b(class)
id name
1  蔬菜
2  水果

希望查出来的是
id name class className
2  大米  0     null
4  槟榔  3     null

8 个解决方案

#1


select a.* ,b.name
from tablea a,tableb b 
where a.class = b.id 
      and id%2 = 0

#2


select a.* ,b.name as classname
from tablea a,tableb b 
where a.class = b.id 
      and id%2 = 0

#3


晕, 我不是要找出id为偶数的记录, 我是要找出
a中的class字段不存在于b的id字段的所有记录...

b的id只有1,2, 而a的class有0,1,2,3, 我要找出 a的class为0,3的记录

#4



select a.*,b.name from a left join b on a.class=b.id and b.id is null

#5


select a.*,null as classname from a where classid not in(select id from b)

#6


select a.*,null as classname from a where class not in(select id from b)

#7


select a.id,a.name,a.class,b.name classname
from a left join b on a.class=b.id
where b.name is null

#8


我已经自己试出来了, 结果和7楼是一样的
楼上的那些要不然就是用的 not in, 要不然就是错的
不过还是谢谢你们

#1


select a.* ,b.name
from tablea a,tableb b 
where a.class = b.id 
      and id%2 = 0

#2


select a.* ,b.name as classname
from tablea a,tableb b 
where a.class = b.id 
      and id%2 = 0

#3


晕, 我不是要找出id为偶数的记录, 我是要找出
a中的class字段不存在于b的id字段的所有记录...

b的id只有1,2, 而a的class有0,1,2,3, 我要找出 a的class为0,3的记录

#4



select a.*,b.name from a left join b on a.class=b.id and b.id is null

#5


select a.*,null as classname from a where classid not in(select id from b)

#6


select a.*,null as classname from a where class not in(select id from b)

#7


select a.id,a.name,a.class,b.name classname
from a left join b on a.class=b.id
where b.name is null

#8


我已经自己试出来了, 结果和7楼是一样的
楼上的那些要不然就是用的 not in, 要不然就是错的
不过还是谢谢你们