假设这是左外连接的正确 Ansi SQL语法:
SELECT *
FROM employee LEFT OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID
这是右外连接的正确 Ansi SQL语法:
SELECT *
FROM employee RIGHT OUTER JOIN department
ON employee.DepartmentID = department.DepartmentID
这是 Sybase 的旧版左外连接:
SELECT * FROM employee, department
WHERE employee.DepartmentID *= department.DepartmentID
这是旧的 Sybase 相当于右外连接:
SELECT * FROM employee, department
WHERE employee.DepartmentID =* department.DepartmentID
因此,我们将*放在等号的左侧,用于左外连接,在右侧用于右外连接。
这是对的吗?
答案 0 :(得分:3)
*=
相当于左外连接,而=*
相当于右外连接(正如您猜测的那样)
您可能有兴趣注意,在旧版Sybase ASE中不支持*=*
。 Semantics and compatibility of Transact-SQL outer joins解释了原因(PDF)
答案 1 :(得分:2)
是肯定的。但有时这两个在处理
的结果集时可能会略有不同答案 2 :(得分:1)
是的,这是正确的
答案 3 :(得分:1)
为什么要从左连接转换为旧语法,您是否应该从旧语法转换为首选较新标准?我不知道Sybase,但由于SQl Server基于Sybase,我怀疑它可能有同样的问题,即旧语法并不总是正确地被解释为外连接。有时数据库可能会将其解释为交叉连接,因此通常我不建议使用它,除非您访问的是旧版本的数据库,因为新语法不可用。