pubs数据库使用自联接查找居住在 Oakland 相同邮码区域中的作者。select a.au_id ,a.city,a.zip
from dbo.authors a join dbo.authors b
on a.zip = b.zip and a.city = 'Oakland'and a.au_id <> b.au_idSQL语句有问题吗? 怎么查出的结果有一条重复数据

解决方案 »

  1.   

    是不是b.city 也要等于 'Oakland'啊
      

  2.   

    SELECT * FROM TB b where exists(select 1 from tb where zip = b.zip and a.city = 'Oakland' and au_id <> b.au_id)
      

  3.   

    自连接,条件里用了<>,那出现重复数据,很正常
    id zip
    1  116
    2  116
    3  116
    这样查询结果 1,2,4 应该都是重复的可以distinct,再就是 2#的方法
      

  4.   

    SELECT a.au_id, a.city, a.zip 
    FROM dbo.authors a
    WHERE EXISTS(
              SELECT 1 
              FROM dbo.authors b
              WHERE a.zip = b.zip
               AND a.au_id<>b.au_id
          )
    AND a.city = 'Oakland'
      

  5.   

    就是想知道为什么 用了<> 就会重复?
    另外 2#说的 方法 我不明白
    exists(select 1 from tb where zip = b.zip and a.city = 'Oakland' and au_id <> b.au_id)
    是什么意思 
    新手 不好意思 希望知道的能具体解释下