当前位置:  开发笔记 > 数据库 > 正文

Transact-SQL速记连接语法?

如何解决《Transact-SQL速记连接语法?》经验,为你挑选了2个好方法。

我在处理遗留代码时已经注意到几次,你可以使用.在sql中做左右外连接

=*

作为"右外连接"的简写

*=

作为这样的语句中"左外连接"的简写:

select table1.firstname, table2.lastname
from table1, table2
where table1.id *= table2.id

我猜想还有其他像这两种运算符用于不同类型的连接,但我还没有找到任何关于它的完整文档.所以你知道任何与文档有关的好链接吗?

我个人认为我使用这些运算符看到的SQL语句比使用拼写语法时更难以弄清楚,因此使用速记版本有什么好处吗?



1> James..:

=*和*=不符合当前的SQL标准,我相信这些运算符很快就会被弃用,你应该总是使用标准的连接语法.你提到的其他运算符令人困惑,需要消失,当我在数据库对象中看到这些时,我感到畏缩.


但是当代码错误时 - 因为这是(=*或*=会给出错误的结果),你应该在看到代码时替换它.

2> 小智..:

它有意外后果的原因是它会将ENTIRE where子句解释为JOIN子句.例:

选择一:

select * from table a left join table b on a.id=b.id
     where b.name = "hello world"

VS

选择二:

select * from table a left join table b on a.id=b.id and b.name = "hello world"

这2个选择返回不同的结果.当你写这样的语句时:

select * from tablea,tableb where tablea.id *= tableb.id and b.name="hello world"

我希望大多数人都希望Select1的结果...但你实际上会得到Select2的结果.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有