在MySQL中使用“USING”而不是“ON”是否有缺点?

时间:2008-11-21 08:57:42

标签: mysql syntax join

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;

VS

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

鉴于两个表都有一个id字段,使用第二个版本是否有任何不利之处。这不仅仅是懒惰 - 使用USING的版本对我来说似乎更加清晰。

(请不要提到别名 - 我想知道是否有任何理由支持一个条件结构而不是另一个条件结构)

2 个答案:

答案 0 :(得分:6)

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

SELECT * FROM foo JOIN栏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

,至少还有一些其他知识要求

答案 1 :(得分:1)

USING的灵活性不如通用ON子句:

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

  • 比较必须相等。

  • 查询中没有其他表可以包含同名的列。