left加入旧语法迁移

时间:2013-06-07 09:40:50

标签: sql sql-server-2008

我必须将旧的SQL语句迁移到SQLServer2008。旧的SQL语句仍然具有旧的Join-Operator“* =”。当然我可以设置数据库兼容性,但我不喜欢这样做: - )

我的问题:我不确定我是否正在遵循正确的做法,我不能再测试旧陈述了。有人可以检查我的新SQL语句的语法吗?

旧的原声明:

select * from A,B where A.field *= B.field

我的猜测:

SELECT * from A
LEFT JOIN B
ON A.field=B.field;

或者它是对立的方式? :

SELECT * from B
LEFT JOIN A
ON B.field=A.field;

谢谢和问候

3 个答案:

答案 0 :(得分:3)

你的第一个猜测是正确的。这个查询:

select * from A,B where A.field *= B.field

和这个查询:

SELECT * from A
LEFT JOIN B
ON A.field=B.field;

产生相同的结果 - 前提是原始查询与WHERE子句中的其他谓词表现良好 - 旧语法被弃用的全部原因是它在某些情况下会产生“有趣”的结果 - 所以如果你依赖那些,你就不会得到它们。

答案 1 :(得分:1)

SELECT * from A
LEFT JOIN B
ON A.field=B.field;

这是正确的

答案 2 :(得分:0)

两者都是等价的,但

SELECT * from A
LEFT JOIN B
ON A.field=B.field;

会更容易接受。