dri*_*iis 925 sql sql-server join inner-join
这两个连接都会给我相同的结果:
SELECT * FROM table JOIN otherTable ON table.ID = otherTable.FK
Run Code Online (Sandbox Code Playgroud)
VS
SELECT * FROM table INNER JOIN otherTable ON table.ID = otherTable.FK
Run Code Online (Sandbox Code Playgroud)
表现或其他方面的陈述是否有任何区别?
不同的SQL实现之间是否有所不同?
pal*_*rse 1017
它们在功能上是等价的,但INNER JOIN读取起来可能更清晰,特别是如果查询中包含其他连接类型(即LEFT或RIGHT或CROSS).
Qua*_*noi 226
不,没有区别,纯粹的语法糖.
net*_*rog 130
如果在使用单词JOIN时未指定类型,则 INNER JOIN是默认值.
您也可以使用LEFT OUTER JOIN或RIGHT OUTER JOIN,在这种情况下,单词OUTER是可选的,或者您可以指定CROSS JOIN.
要么
对于内连接,语法为:
SELECT ...
FROM TableA
[INNER] JOIN TableB(换句话说,"INNER"关键字是可选的 - 无论是否有结果都是相同的)
Kri*_*ten 49
与OUTER JOINs此类似,这个词"OUTER"是可选的.它是LEFT或者RIGHT关键字使得JOINa "OUTER" JOIN.
但是由于某种原因,我总是使用"OUTER"in in LEFT OUTER JOIN和never 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
Run Code Online (Sandbox Code Playgroud)
Mar*_*ith 25
正如其他答案已经说明的那样,你的例子没有区别.
语法的相关位被记录在这里
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Run Code Online (Sandbox Code Playgroud)
显示所有都是可选的.该页面进一步澄清了这一点
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
573192 次 |
| 最近记录: |