刚接触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’表述不是太清楚。见谅

解决方案 »

  1.   

    存在用 IN, 不存在用 NOT IN
     select ID from 表1 where name='小王' where id not in ( select id from  表2 )
      

  2.   

    或者用 EXISTS, NOT EXISTSselect ID from 表1 where name='小王'
    WHERE EXISTS( SELECT * from 表2 where ID= 表1.ID
      

  3.   

    失误,用 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
      

  4.   

    select id,name from 表1 a left join 表2 b on a.id = b.id where b.id is null
    楼主可以试下,应该可以解决问题
      

  5.   

    这种需求,因为会涉及到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楼的写法
      

  6.   

    结贴给分了。boy
      

  7.   

    结贴给分了。boy