我的两个表的结果集存在问题。
我创建了两个表。
bool retVal = false;
X509Chain chain = new X509Chain();
chain.ChainPolicy.ExtraStore.Add(rootCertificate.X509);
chain.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck;
retVal = chain.Build(leafCertificate.X509);
return retVal;
我想得到这些表的结果集。
如果我将此查询与 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
获得大量结果?
由于 : - )
答案 0 :(得分:0)
因为第一个表中的许多行与第二个表中的许多行不匹配。实际上,第二行中的几乎所有行都匹配第一个中的每个。大概你想要:
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
中没有地址的行。 (将表格放在其他顺序或使用right join
会得到没有人的地址。)