请教各位大侠:一个表A字段有多条重复或者不重复记录记录(如A=12345678有三条记录,但是A=87654321只有一条记录)。如何能用select实现重复的记录只显示B字段='小明'的那条记录,但是不重复的记录就照常显示(即使这条记录B<>'小明')?

解决方案 »

  1.   

    select * from tablename a
    where not exists (select 1 from tablename where A字段=a.A字段)
    or B字段='小明'
      

  2.   

    楼主没说清楚,如果有重复,而且没有B字段='小明'的记录怎么显示我的语句是都不显示1楼错了,改下select * from tablename a
    where not exists (select 1 from tablename where A字段=a.A字段 and B字段<>a.B字段)
    or B字段='小明'
      

  3.   

    可能这样说清楚点:一个表A字段有多条重复或者不重复记录记录(如A=12345678有三条记录,但是A=87654321只有一条记录)。如何能用select实现A字段重复的记录只显示B字段='小明'的那条记录(这样的记录只有一条),但是A字段没有重复的记录就照常显示(即使这条记录B<>'小明')?
      

  4.   

    还是没有说清楚,如果A=12345678有三条记录,但是A字段重复的记录没有B='小明'的,怎么办?
    比如:
    A              B
    12345678     小花
    12345678     小林
    12345678     小噢
    要显示哪个?
      

  5.   

    呵呵……明白了,因为我的数据中不会出现这个问题,所以我没有考虑到!这类数据不用显示的(反正根本不会有这种情况)!Yang_(扬帆破浪)的语句我试过了,非常正确!十分感谢!这条语句还有一个小问题!select 1 是什么意思呢?我sql语言初学,不熟!麻烦大侠解释一下!谢谢!!
      

  6.   

    select 1 from tablename where A字段=a.A字段 and B字段<>a.B字段
    就是只要后面的条件满足,选出来的结果就为1
    这里你也可以换为其他的2,3,*啊什么的~