【发布时间】:2011-07-04 08:44:34
【问题描述】:
INNER JOIN 查询和隐式连接查询(在 FROM 关键字后列出多个表)有什么区别?例如:
给定以下两个表:
CREATE TABLE Statuses(
id INT PRIMARY KEY,
description VARCHAR(50)
);
INSERT INTO Statuses VALUES (1, 'status');
CREATE TABLE Documents(
id INT PRIMARY KEY,
statusId INT REFERENCES Statuses(id)
);
INSERT INTO Documents VALUES (9, 1);
这两个 SQL 查询有什么区别?根据我所做的测试,它们返回相同的结果。他们做同样的事情吗?是否存在它们会返回不同结果集的情况?
SELECT s.description FROM Documents d, Statuses s WHERE d.statusId = s.id AND d.id = 9;
SELECT s.description FROM Documents d INNER JOIN Statuses s ON d.statusId = s.id WHERE d.id = 9;
【问题讨论】:
-
没有区别。其次是更好的语法,它可以更清楚地了解连接条件,而无需查看其他地方,并且可以帮助避免无意的交叉连接。
标签: sql