虽然每个联接规范只联接两个表,但 FROM 子句可包含多个联接规范。这样一个查询可以联接若干个表。
pubs 数据库的 titleauthor 表提供了一个很好的示例,该示例说明联接两个以上的表非常有用。下面的 Transact-SQL 查询可找到特定类型的所有书名及相应的作者姓名:
USE pubsSELECT a.au_lname, a.au_fname, t.titleFROM authors a INNER JOIN titleauthor ta ON a.au_id = ta.au_id JOIN titles t ON ta.title_id = t.title_idWHERE t.type = 'trad_cook'ORDER BY t.title ASC
下面是结果集:
au_lname au_fname title ----------------- -------------------- ---------- Blotchet-Halls Reginald Fifty Years in Buckingham Palace KitchensPanteley Sylvia Onions, Leeks, and Garlic: Cooking Secrets of the MediterraneanO'Leary Michael Sushi, Anyone?Gringlesby Burt Sushi, Anyone?Yokomoto Akiko Sushi, Anyone?(5 row(s) affected)
注意,FROM 子句中的 titleauthor 表不会为结果提供任何列。而且联接列 au_id 和 title_id 都不会出现在结果中。尽管如此,只有将 titleauthor 用作中间表,此联接才有可能实现。
由于 titleauthor 表是参与联接的其它表之间的连接中间点,因此联接的中间表(titleauthor 表)可称为转换表或中间表。
如果同一语句包含多个联接运算符,用于联接多于两个的表或联接多于两对的列,那么联接表达式可以用 AND 或 OR 连接。
WHERE
SELECT
运算符
SELECT 示例