我在处理遗留代码时已经注意到几次,你可以使用.在sql中做左右外连接
=*
作为"右外连接"的简写
*=
作为这样的语句中"左外连接"的简写:
select table1.firstname, table2.lastname from table1, table2 where table1.id *= table2.id
我猜想还有其他像这两种运算符用于不同类型的连接,但我还没有找到任何关于它的完整文档.所以你知道任何与文档有关的好链接吗?
我个人认为我使用这些运算符看到的SQL语句比使用拼写语法时更难以弄清楚,因此使用速记版本有什么好处吗?
=*和*=不符合当前的SQL标准,我相信这些运算符很快就会被弃用,你应该总是使用标准的连接语法.你提到的其他运算符令人困惑,需要消失,当我在数据库对象中看到这些时,我感到畏缩.
它有意外后果的原因是它会将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的结果.