2016-06-07 73 views
0

我在SQL服務器中有一個簡單的查詢。在連接表上循環SQL Server

SELECT DISTINCT o.OrderNumber, p.PropertyUse 
FROM Orders o 
LEFT OUTER JOIN Properties p ON o.OrderID = p.OrderID 

每個訂單可以有多個屬性。

我必須通過它的屬性(連接表)'循環'每個訂單(主表),並檢查,如果其中一個屬性有一個屬性使用不等於'x'我不想要這個命令來結果。

我該如何做到這一點?

回答

1

還可以與NOT IN()解決:

SELECT * FROM Properties t 
WHERE t.OrderID NOT IN(SELECT s.orderID FROM Properties s 
         WHERE s.propertyUse = 'X') 
+0

太感謝你了,我也想不出該怎麼辦呢?我只是改變了我的問題,我想確保它是正確的 - 如果其中一個property使用不等於x而不是順序不應該出現在結果上,所以我將您的代碼更改爲:WHERE s.propertyUse <>' X'。那是對的嗎? – user3378165

+0

是的,這是正確的:) @ user3378165 – sagi

+0

非常感謝! – user3378165

1

您可以使用NOT EXISTS此:

SELECT o.* 
FROM Orders o 
WHERE NOT EXISTS (
    SELECT 1 
    FROM Properties p 
    WHERE o.OrderID = p.OrderID AND propertyUse = 'X')