【发布时间】:2009-05-09 10:11:09
【问题描述】:
假设我有这个查询:
SELECT bugs.id, bug_color.name FROM bugs, bug_color
WHERE bugs.id = 1 AND bugs.id = bug_color.id
我为什么要使用联接?它会是什么样子?
【问题讨论】:
假设我有这个查询:
SELECT bugs.id, bug_color.name FROM bugs, bug_color
WHERE bugs.id = 1 AND bugs.id = bug_color.id
我为什么要使用联接?它会是什么样子?
【问题讨论】:
联接是合成糖,更易于阅读。
带有连接的查询将如下所示:
SELECT bugs.id, bug_color.name
FROM bugs
INNER JOIN bug_color ON bugs.id = bug_color.id
WHERE bugs.id = 1
对于两个以上的表,连接有助于将与表相关的条件保存在一个位置,从而使查询更具可读性。
【讨论】:
join 关键字是连接表的新方法。
当我学习 SQL 时,它还不存在,所以加入是按照您在问题中显示的方式完成的。
现在我们有诸如连接和别名之类的东西来使查询更具可读性:
select
b.id, c.name
from
bugs as b
inner join
bug_color as c on c.id = b.id
where
b.id = 1
还有其他的连接变体,如left outer join、right outer join 和full join,使用旧语法更难实现。
【讨论】:
连接语法允许外连接,所以你可以去:
SELECT bugs.id, bug_color.name
FROM bugs, bug_color
LEFT OUTER JOIN bug_color ON bugs.id = bug_color.id
WHERE bugs.id = 1
【讨论】: