SQL选择约定

use*_*964 1 sql

我们遇到了以下"问题".我喜欢用以下文字写作:

SELECT  Id, Name
FROM    Table1
JOIN    Table2 ON Table1.FK1 = Table2.FK1
Run Code Online (Sandbox Code Playgroud)

但我的一位同事使用:

SELECT  Id, Name
FROM    Table1 JOIN Table2 
ON      Table1.FK1 = Table2.FK1
Run Code Online (Sandbox Code Playgroud)

这是最好的做法吗?我认为如果所有使用的表都是对齐的话会更方便.

SQL*_*ace 10

我更喜欢第一个


Awe*_*own 8

我们实际上会这样做:

SELECT Id, Name
    FROM Table1
    JOIN Table2 
        ON Table2.FK1 = Table2.FK1
Run Code Online (Sandbox Code Playgroud)


Wil*_*rds 5

我工作的公司有一个使用对象模型生成sql的应用程序.它在大多数情况下使用第二种语法生成它.所以很多联接然后是条件.当你有很多表时,尝试解密哪个条件适用于哪个表是非常令人沮丧的.

所以我更喜欢把ON子句放在我加入的表中.它可以更容易地告诉您用于表的连接子句以及作为连接语句一部分的条件子句.让你的联盟正确是成功的一半.我也更喜欢括号.

SELECT primarytable.whatever
FROM primarytable
     INNER JOIN secondarytable ON (primarytable.primarykey = secondarytable.foreignkey)
     INNER JOIN othertable ON (primarytable.foreignkey = othertable.primarykey AND othertable.somefield = 1)
     LEFT OUTER JOIN outertable ON (secondarytable.foreignkey = outertable.primarykey)
WHERE primarytable.somefield IS NOT NULL
Run Code Online (Sandbox Code Playgroud)