首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL 基础语法有关问题(左连、右连、内连)

2014-01-25 
SQL 基础语法问题(左连、右连、内连)我有2张表1:Person2:Order1:Create Table Order(OrderID int identity(1

SQL 基础语法问题(左连、右连、内连)
我有2张表
1:Person

2:Order

1:
Create Table Order
(
OrderID int identity(1,1),
OrderNo varchar(50),
ID_P int
)
2:
Create Table Person
(
PersonID int identity(1,1),
LastName varchar(50),
FirstName varchar(50),
AddRess varchar(50),
City varchar(50),
ID_P int
)
里面数据
Order
11231231
24564562
34564565
Person
1gX1USAFeizhou1
2lXJCHINAshijieNULL

SQL语句如下
SELECT P.LastName, P.FirstName, P.ID_P
FROM Person p
LEFT JOIN Order o
ON
p.ID_P=o.ID_P
输出
gX11
lXJNULL
问题:我在这里左连,条件p.ID_P=o.ID_P 为什么我在这里已经限制了(Order.ID_P=Person.ID_P)应该显示1条,为什么会显示2条
详细点解释和介绍

SELECT P.LastName, P.FirstName, P.ID_P
FROM Person p
RIGHT JOIN Order o
ON
p.ID_P=o.ID_P
输出
gX11
NULLNULLNULL
NULLNULLNULL
问题:我在这里右连,条件p.ID_P=o.ID_P 为什么我在这里已经限制了(Order.ID_P=Person.ID_P)应该显示1条,为什么会显示2条
详细点解释和介绍


SELECT P.LastName, P.FirstName, P.ID_P
FROM Person p
INNER JOIN Order o
ON
p.ID_P=o.ID_P
输出
gX11
问题:我在这里内连,条件p.ID_P=o.ID_P 为什么我在这里已经限制了(Order.ID_P=Person.ID_P)应该显示1条,为什么会显示2条
详细点解释和介绍

详细点啊!!



[解决办法]
1.由于是做连接,所以会显示Person的2条记录。

2.是右连接,那么会显示order表的记录,但由于你的select子句中是: P.LastName, P.FirstName, P.ID_P,由于按照ID_P字段关联,所以只有为1的ID_P关联了出来,其他两天都没关联上,所以person表的字段,就都是null了

3.内连接,就是2个表都有的数据,才出来,所以就显示了那个ID_P为1的记录
[解决办法]
1.左连接left join
就是满足左边表的条件的所有记录都显示出来,而右边无显示的以NULL显示
2.右连接right join
就是满足右边表的条件的所有记录都显示出来,而左边无显示的以NULL显示
3.内连接inner join
又名等值连接,表示两个表的条件都满足的记录被显示出来,而无满足条件的记录不予以显示。。

热点排行