【问题标题】:Why is the ( ) mandatory in the SQL statement "select * from gifts INNER JOIN sentgifts using (giftID);"?为什么 SQL 语句“select * from gift INNER JOIN sentgifts using (giftID);”中的 () 是强制的?
【发布时间】:2010-04-24 13:22:33
【问题描述】:

为什么 SQL 语句中的 () 是强制性的

select * from gifts INNER JOIN sentgifts using (giftID); 

? ( ) 通常用于指定某物的分组。但是在这种情况下,我们是否应该能够使用 2 个或更多字段名称...?在上面的例子中,它是1个字段是可以很清楚的,是不是在很清楚的情况下没有让解析器绕过()? (例如在语言 Ruby 中)。

【问题讨论】:

    标签: sql mysql inner-join using


    【解决方案1】:

    是的,您可以在 using 子句中指定多个列,如下所示。

    using(col_1,col_2,col_3)
    

    【讨论】:

      【解决方案2】:

      您实际上可以指定一个列列表,请查看here

      这是强制性的,因为语法异常会破坏解析器并且不利于性能。

      也就是说,有人可能会争辩说,USING 本身已经只是 语法糖,它只是用普通 ON 指定连接的快捷方式连接表的列名相同时的语法。

      因为你可以加入ON多个列USING只是做同样的事情。

      以下陈述因此等效

      SELECT A.c1, A.c2, A.c3 FROM TABLE_A A
      JOIN TABLE_B B 
      ON A.c1 = B.c1 
      ON A.c2 = B.c2 
      ON A.c3 = B.c3
      

      SELECT A.c1, A.c2, A.c3 FROM TABLE_A A
      JOIN TABLE_B B 
      USING (c1,c2,c3)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多