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
将获得没有人的地址。)
我对两个表的结果集有问题。
我创建了两个表。
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
将获得没有人的地址。)