我已经获得了这个旧的 SQL 代码(表名已更改)来复制,并且 JOIN 语法不是我以前见过的东西,而且很难用 google 搜索到:
select <stuff>
from A
inner join B
on A.ID = B.A_ID
inner join C -- eh? No ON?
inner join D
ON C.C_ID = D.C_ID
ON B.C_ID = D.C_ID -- a second ON here? what?
当我看到代码时,我以为我会收到损坏的代码并且它不会运行。
但确实如此。 (SQL Server 2012)
它有什么作用?有没有更合理/标准的编写方式?这里发生了什么事?
虽然不寻常,但这是完全有效的 tsql。通常,当您对一组相互内连接的相关表进行外连接时,您会看到这种方法。恕我直言,更好的写法是:
inner join B
on A.ID = B.A_ID
inner join (C inner join D ON C.C_ID = D.C_ID)
ON B.C_ID = D.C_ID
这使得连接逻辑清晰 - 并且对读者也有帮助。此外,它还让读者知道开发人员是故意这样做的。因此,让这是一个糟糕编码的例子。评论不寻常的事情。解释一下事情。让某人定期检查您的代码,以帮助改进您的风格和用法。
您可以通过重新排列 from 子句中表的顺序来以“典型”风格编写此内容 - 但我猜测当前版本对于真实的表名称更具逻辑意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)