2

MySQL的两个片段:

SELECT * FROM annoyingly_long_left_hand_table 
    LEFT JOIN annoyingly_long_right_hand_table 
    ON annoyingly_long_left_hand_table.id = annoyingly_long_right_hand_table.id;

对比

SELECT * FROM annoyingly_long_left_hand_table 
    LEFT JOIN annoyingly_long_right_hand_table 
    USING (id);

鉴于两个表都有一个id字段,使用第二个版本有什么缺点。这不仅仅是懒惰 - 使用 USING 的版本对我来说似乎更清晰。

(请不要提及别名 - 我想知道是否有任何理由偏爱一种条件结构而不是另一种)

4

2 回答 2

6

两者之间有一个小的功能差异,因为你只得到一个而不是获得 2 个 ID 列。

SELECT * FROM foo JOIN bar ON ( foo.id == bar.id )

id,fooname,id,barname

SELECT * FROM foo JOIN bar USING (id)

id、fooname、barname

因此,使用此语法的用户至少有一些额外的知识要求,http://dev.mysql.com/doc/refman/5.0/en/join.html

于 2008-11-21T09:14:56.797 回答
1

USING比通用ON子句灵活一点:

  • 两个表中的列必须具有相同的名称。

  • 比较必须是相等的。

  • 查询中的任何其他表都不能有同名的列。

于 2009-09-29T16:25:39.317 回答