两个表有一个相同字段,查询其中一个表中的字段里面的值不在另外一个表中的sql语句

tjhaua11 2013-10-23 11:41:15
现在有两个表,table_a包含(a1,ab),table_b(b1,ab);

其中table_a里面ab字段的数据较多,table_b中ab的数据都是包含在那个里面的,但是某些数据可能没有.
现在要查出table_a里面ab字段有table_b里面没有的行对应的a1值。

其中ab字段对应的值是唯一的.
比如table_a是{(1,a),(2,b),(3,c),(4,d)},table_b{(fda,a),(fjdk,c)}
那我要得到的就是(2,b)和(4,d)这两行

有没有一句话解决问题的?

...全文
11142 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjhaua11 2013-10-25
  • 打赏
  • 举报
回复
那就是 select * from table_a where ab not in ( select ab from table_b1 union all select ab from table_b2 union all select ab from table_b3 ) 这样吧
引用 6 楼 ACMAIN_CHM 的回复:
[quote=引用 5 楼 tjhaua11 的回复:] 大神啊,既然遇到了加问下,table_b目前只是一个表,假如有3个跟它相同结构的表,table_b1,table_b2,table_b3, 现在要查table_a里面ab字段有,但是三个表都没有的话,怎么连接起来查询? [quote=引用 3 楼 rucypli 的回复:] select * from table_a where ab not in (select ab from table_b);
[/quote]先用UNION查。[/quote]
tjhaua11 2013-10-25
  • 打赏
  • 举报
回复
斑竹啊,问最后一个问题,我发现现在两个数据库几千条数据的情况下,这个语句就需要几秒钟的样子,当然还不是正式服务器,但是将来这个地方搞个几十万条数据估计的得崩溃啊。 有没有办法可以更好的解决这个问题? 这个字段其实保存的只是一些比较短的字符串,而且table_a里面这些字符串都是唯一的,我弄了个地方查出来保存为list然后比较好像也可以,但是数据太多java虚拟机都受不了,所以没有更好的办法了。
引用 6 楼 ACMAIN_CHM 的回复:
[quote=引用 5 楼 tjhaua11 的回复:] 大神啊,既然遇到了加问下,table_b目前只是一个表,假如有3个跟它相同结构的表,table_b1,table_b2,table_b3, 现在要查table_a里面ab字段有,但是三个表都没有的话,怎么连接起来查询? [quote=引用 3 楼 rucypli 的回复:] select * from table_a where ab not in (select ab from table_b);
[/quote]先用UNION查。[/quote]
军说网事 2013-10-24
  • 打赏
  • 举报
回复
引用 3 楼 rucypli 的回复:
select * from table_a where ab not in (select ab from table_b);
+1
ACMAIN_CHM 2013-10-24
  • 打赏
  • 举报
回复
引用 5 楼 tjhaua11 的回复:
大神啊,既然遇到了加问下,table_b目前只是一个表,假如有3个跟它相同结构的表,table_b1,table_b2,table_b3, 现在要查table_a里面ab字段有,但是三个表都没有的话,怎么连接起来查询? [quote=引用 3 楼 rucypli 的回复:] select * from table_a where ab not in (select ab from table_b);
[/quote]先用UNION查。
tjhaua11 2013-10-24
  • 打赏
  • 举报
回复
大神啊,既然遇到了加问下,table_b目前只是一个表,假如有3个跟它相同结构的表,table_b1,table_b2,table_b3, 现在要查table_a里面ab字段有,但是三个表都没有的话,怎么连接起来查询?
引用 3 楼 rucypli 的回复:
select * from table_a where ab not in (select ab from table_b);
tjhaua11 2013-10-23
  • 打赏
  • 举报
回复
是mysql的数据库
rucypli 2013-10-23
  • 打赏
  • 举报
回复
select * from table_a where ab not in (select ab from table_b);
小小小小周 2013-10-23
  • 打赏
  • 举报
回复
select a.* from table_a a left join table_b b on a.ab=b.ab where b.ab is null;

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧