Sybase SQL 加入结果集

Sybase SQL join RESULT SET

我对两个表的结果集有问题。

我创建了两个表。

 create table person
    (ID int not null  PRIMARY KEY,
     NAME varchar (50) 
    )

create table address
       ( ID int NOT NULL PRIMARY KEY,
         PERSON_ID int not null,
         ADDRESS VARCHAR (20) null, 
         ZIP int)
insert into person (ID, NAME) values ( 1,'Hans') 
insert into person values (2,'Peter')

insert into address values (1,1, 'Andernach',56626)   
insert into address values (2,2,'Koblenz',56000)  
insert into address values (3,3,'Neuwied',56100)  

我想获得这些表的结果集。

如果我将此查询与 p.ID = a.PERSON_ID 一起使用 我得到了正确的结果。

但是如果我使用 p.ID != a.PERSON_ID 的查询 我得到了很多结果

select  a.ADDRESS,
        a.ZIP,
        a.PERSON_ID,
        p.NAME
from address a,
     person p
 where a.PERSON_ID != p.ID 

我的问题:为什么 != 会得到很多结果?

谢谢 :-)

因为第一个 table 中的很多行与第二个中的很多行不匹配。事实上,第二个中的几乎所有行都将匹配第一个中的 each。想必你想要:

select  a.ADDRESS,
        a.ZIP,
        a.PERSON_ID,
        p.NAME
from person p left join
     address a
     on a.PERSON_ID = p.ID 
where p.id is null;

这会获取 person 中没有地址的行。 (将 table 以其他顺序排列或使用 right join 将获得没有人的地址。)