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的版本对我来说似乎更加清晰。
(请不要提到别名 - 我想知道是否有任何理由支持一个条件结构而不是另一个条件结构)
答案 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
子句:
两个表中的列必须具有相同的名称。
比较必须相等。
查询中没有其他表可以包含同名的列。