【问题标题】:Is there a disadvantage to using "USING" instead of "ON" in MySQL?在 MySQL 中使用“USING”而不是“ON”有什么缺点吗?
【发布时间】:2008-11-21 08:57:41
【问题描述】:

MySQL的两个sn-ps:

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 的版本对我来说似乎更清晰。

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

【问题讨论】:

    标签: mysql syntax join


    【解决方案1】:

    两者之间有一个小的功能差异,因为您只获得一个 ID 列,而不是获得 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

    【讨论】:

      【解决方案2】:

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

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

      • 比较必须相等。

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

      【讨论】:

        猜你喜欢
        • 2012-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 2021-08-04
        • 2016-03-17
        相关资源
        最近更新 更多