首页 文章

JOIN和INNER JOIN之间的区别

提问于
浏览
824

这两个连接都会给我相同的结果:

SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK

VS

SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK

表现或其他方面的陈述是否有任何区别?

不同的SQL实现之间是否有所不同?

7 回答

  • 897

    OUTER JOINs 类似,单词 "OUTER" 是可选的 . LEFTRIGHT 关键字使 JOIN 成为 "OUTER" JOIN .

    但是出于某种原因,我总是使用 "OUTER" ,如 LEFT OUTER JOIN ,而不是 LEFT JOIN ,但我从不使用 INNER JOIN ,而是我只使用 "JOIN"

    SELECT ColA, ColB, ...
    FROM MyTable AS T1
         JOIN MyOtherTable AS T2
             ON T2.ID = T1.ID
         LEFT OUTER JOIN MyOptionalTable AS T3
             ON T3.ID = T1.ID
    
  • 116

    它们在功能上是等价的,但是 INNER JOIN 可以更清楚地读取,特别是如果查询中包含其他连接类型(即 LEFTRIGHTCROSS ) .

  • 211

    正如其他答案已经说明的那样,你的例子没有区别 .

    相关的语法位是documented here

    <join_type> ::= 
        [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
        JOIN
    

    显示所有都是可选的 . 该页面进一步阐明了这一点

    INNER指定返回所有匹配的行对 . 丢弃两个表中不匹配的行 . 如果未指定连接类型,则这是默认值 .

    语法也表明有一次需要 INNER . 指定连接提示时 .

    请参阅下面的示例

    CREATE TABLE T1(X INT);
    CREATE TABLE T2(Y INT);
    
    SELECT *
    FROM   T1
           LOOP JOIN T2
             ON X = Y;
    
    SELECT *
    FROM   T1
           INNER LOOP JOIN T2
             ON X = Y;
    
  • 684

    输入 JOIN 默认情况下执行 INNER JOIN .

    对于所有其他人来说,一张图片有时候 Value 超过几百个字:

    Enter image description here

    图片由Code Project提供 .


  • 45

    不,没有区别,纯粹syntactic sugar .

  • 42

    INNER JOIN = JOIN

    如果在使用单词JOIN时未指定类型,则INNER JOIN是默认值 . 您也可以使用LEFT OUTER JOIN或RIGHT OUTER JOIN,在这种情况下,单词OUTER是可选的,或者您可以指定CROSS JOIN .

    要么

    对于内部联接,语法为:SELECT ... FROM TableA [INNER] JOIN TableB(换句话说,“INNER”关键字是可选的 - 结果是否相同,有或没有)

  • 22

    不同的SQL实现之间有什么不同?

    是的,Microsoft Access不允许 join . 它需要inner join .

相关问题