求助,mysql中根据条件多表查询。

qq_40806061 2017-10-26 10:37:15
刚接触mysql 想多表查询,不知道怎么使用。
我想查找表1中条件name=‘姓名‘ 且 在表2中不存在此ID的人员ID和姓名,怎么用一条select语句得到信息
表1 表2

ID name ID sex
1 小李 1 男
2 小王 3 女


如上表,我想得到是,表1的姓名为小王ID且在表2中不存此ID的信息 也就是说我想得到 ID 2 name 小王

如果用两条,应该是先找出表1小王的ID
select ID from 表1 where name='小王'
然后
select 表1得到的ID from 表2 where ID=‘表1得到的ID’



表述不是太清楚。见谅
...全文
380 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Harrison_2009 2017-11-01
  • 打赏
  • 举报
回复
结贴给分了。boy
引用 2 楼 zjcxc 的回复:
或者用 EXISTS, NOT EXISTS
select ID from 表1 where name='小王'
WHERE EXISTS( SELECT * from 表2 where ID= 表1.ID)
小熊之怒 2017-10-31
  • 打赏
  • 举报
回复
结贴给分了。boy
wandier 2017-10-30
  • 打赏
  • 举报
回复
楼主该结贴了
LongRui888 2017-10-30
  • 打赏
  • 举报
回复
这种需求,因为会涉及到2个表的数据,所以可以用关联来处理: select distinct t1.* from 表1 t1 left join 表2 t2 on t1.id = t2.id where t1.name='小王' and t2.name is null 也可以用子查询来实现,如1-2楼的写法
wandier 2017-10-27
  • 打赏
  • 举报
回复
select id,name from 表1 a left join 表2 b on a.id = b.id where b.id is null 楼主可以试下,应该可以解决问题
zjcxc 2017-10-27
  • 打赏
  • 举报
回复
失误,用 AND, 而不是两个 WHERE
 select ID from 表1 where name='小王' AND id not in ( select id from  表2 )
select ID from 表1 where name='小王' AND EXISTS( SELECT * from 表2 where ID= 表1.ID
zjcxc 2017-10-27
  • 打赏
  • 举报
回复
或者用 EXISTS, NOT EXISTS
select ID from 表1 where name='小王'
WHERE EXISTS( SELECT * from 表2 where ID= 表1.ID
zjcxc 2017-10-27
  • 打赏
  • 举报
回复
存在用 IN, 不存在用 NOT IN
 select ID from 表1 where name='小王' where id not in ( select id from  表2 )

56,940

社区成员

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

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