【发布时间】:2017-11-15 02:51:36
【问题描述】:
我对 SQL 比较陌生,并且是 Oracle 的完全初学者,并且难以理解 (+) 语法。考虑以下查询:
SELECT *
FROM CustomerShip,
(SELECT DISTINCT b.ShipSeq AS shipSeq
FROM Orders a,
CustomerShip b
WHERE a.OrderId IN (SELECT OrderId
FROM Orders
WHERE CustomerId = @CustomerId
AND OrderType <> 'A')
AND b.CustomerId = @CustomerId
AND b.ShipSeq = a.CustShip
AND OrderStatus <> 'C'
GROUP BY b.ShipSeq) i
WHERE CustomerId = @CustomerId
AND (Address NOT LIKE '%RETAIL%STORE%')
AND ShipSeq = i.ShipSeq(+)
ORDER BY ShipTo DESC, OrderDate DESC;
所以我收集 Oracle 中的 (+) 是 outer join,但我很困惑加入的是什么?内部查询的结果i。我需要为MSSQL 重写此查询,但不确定会是什么样子?
【问题讨论】:
-
"我对 SQL 比较陌生"。 . .那么,不要学习过时的、过时的语法。甚至 Oracle 也建议使用显式外连接。
-
我不是。我正在修改前段时间编写的查询。