我必须将旧的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;
谢谢和问候
答案 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;
会更容易接受。