这是我的表:
id  姓名  工作过的单位
1  刘德华  财务局
2  郭富城  税务局
3  张学友  公安局
4  郭富城  公安局
我想查出即在税务局工作过,又在公安局工作过的人,我已经用组合语句实现了:SELECT a.姓名
FROM (SELECT *
        FROM 单位表
        WHERE 工作过的单位 = '公安局') a INNER JOIN
          (SELECT *
         FROM 单位表
         WHERE 工作过的单位 = '税务局') b ON a.姓名 = b.姓名但我由于某种原因,想用其他方法实现,就是说不用组合查询,只是在select * from 单位表 where 后面加sql语句就可以实现的啊??估计很难,高手也许能解决,请高手教2招吧!!!!! 

解决方案 »

  1.   

    select a.姓名 from table
    where 工作过的单位='xxx' or 工作过的单位='xxxx'
      

  2.   

    SELECT a.姓名 FROM a where a.姓名=b.姓名 and a.工作单位=公安局 and b.工作单位=税务局
      

  3.   

    to jinjazz(近身剪)
    这样查出来的结果是有一个满足条件就可以,我想查在两个单位都工作的记录
      

  4.   

    SELECT distinct(姓名)
    FROM SELECT *
            FROM 单位表
            WHERE 工作过的单位 = '公安局' or 工作过的单位 = '税务局'
      

  5.   

    select * from table where 工作单位='公安局' and 姓名 in ( select 姓名 from table
    where 工作单位='税务局')
      

  6.   

    哦,上面错了,不好意思SELECT distinct(姓名)
    FROM SELECT *
            FROM 单位表
            WHERE 工作过的单位 = '公安局' and 工作过的单位 = '税务局'
      

  7.   

    to chrishdw()
    我不想用我上面的语句,因为在程序用太负载。
    这是我的表:
    id  姓名  工作过的单位
    1  刘德华  财务局
    2  郭富城  税务局
    3  张学友  公安局
    4  郭富城  公安局
    我想查出即在税务局工作过,又在公安局工作过的人
      

  8.   

    select distinct 姓名 from 单位表 where 工作过的单位='公安局' and 姓名 in (select 姓名 from 单位表 where 工作过的单位='税务局')
      

  9.   

    select l.姓名 
    from 单位表 l inner join 单位表 r
    on l.姓名 = r.姓名
    where l.工作过的单位='公安局' and r.工作过的单位='税务局'
      

  10.   

    select t1.姓名 from a t1, a t2 where t1.姓名=t2.姓名 and t1.工作过的单位='公安局' and t2.工作过的单位='税务局'
      

  11.   

    select distinct a.姓名 from 单位表 a left join 单位表 b on a.姓名=b.姓名 
    where a.工作过的单位='公安局' and b.工作过的单位='税务局'
      

  12.   

    select distinct 姓名 from 单位表 where 工作过的单位 in ('公安局' ,'税务局')看看这句的效果如何
      

  13.   

    Group by 好象比上面效力高点吧
      

  14.   

    select distinct 姓名
    from table as a ,table as b
    where a.工作过的单位='公安局' and b.工作过的单位='税务局'
      

  15.   

    select distinct A.姓名 from 单位表 A left join 单位表 B on A.姓名=B.姓名 
    where A.工作过的单位='公安局' and B.工作过的单位='税务局'
      

  16.   

    可以使用组合查询(UNION,INTERSECT,MINUS)
    就是"或,交,差"
    那么我们用交查询实现;
    select 姓名 from 单位表 where 工作过的单位='税务局'intersect select 姓名 from 单位表 where 工作过的单位='公安局';注:where子句是元组选择子句,本例不能用AND
    也就是说在某一列下面,不可能满足俩种条件 
      

  17.   

    select a.姓名 from table
    where 工作过的单位='xxx' and 工作过的单位='xxxx'
      

  18.   

    统计这张表里所有姓名出现过两次的
    select 姓名 from table group by 姓名 having count(*)>1
      

  19.   

    统计这张表里所有姓名出现过两次的
    select 姓名 from table where 工作过的单位 in ('税务局','公安局')  group by 姓名 having count(*)>1
      

  20.   

    To imwjb(CSDN新规:不会结贴就不要提问)我当然知道你列出的情况会选出来的,从楼主的题意,可以看出你的假设是不存在的,楼主是说 工作过的单位,也就是说这个人即使又调回原来的单位仍只有一条记录