我有一個表,並希望執行以下使用where
。我想選擇所有具有NUM_ORDERS = 1
的行,其中CHANNEL_ID in (1,2,3,4)
以及另外的所有行都是NUM_ORDERS > 1
和CHANNEL_ID in (1,2,3)
。我怎樣才能結合這兩個條件?哪裏有不同的條件
感謝您的幫助。
我有一個表,並希望執行以下使用where
。我想選擇所有具有NUM_ORDERS = 1
的行,其中CHANNEL_ID in (1,2,3,4)
以及另外的所有行都是NUM_ORDERS > 1
和CHANNEL_ID in (1,2,3)
。我怎樣才能結合這兩個條件?哪裏有不同的條件
感謝您的幫助。
以下SQL查詢應該這樣做。請注意,由於運算符的優先級,我在where子句中使用的括號不是必需的。
SELECT *
FROM [put_your_table_here]
WHERE (NUM_ORDERS = 1 AND CHANNEL_ID IN (1,2,3,4)) OR (NUM_ORDERS > 1 AND CHANNEL_ID IN (1,2,3))
這將是這樣的:
SELECT *
FROM tableName
WHERE (NUM_ORDERS = 1 AND CHANNEL_ID IN (1,2,3,4))
OR (NUM_ORDERS > 1 AND CHANNEL_ID IN (1,2,3))
您可以使用UNION
相結合的查詢#1和#查詢2的結果。
select * from [table] where NUM_ORDERS = 1 AND CHANNEL_ID in (1,2,3,4)
UNION
select * from [table] where NUM_ORDERS > 1 AND CHANNEL_ID in (1,2,3);
UNION
運算符默認情況下只選擇不同的值。要允許重複的值,使用UNION ALL
:
select * from [table] where NUM_ORDERS = 1 AND CHANNEL_ID in (1,2,3,4)
UNION ALL
select * from [table] where NUM_ORDERS > 1 AND CHANNEL_ID in (1,2,3);
另一種更好的解決方案是使用OR
條款是這樣;
SELECT * from [table] where (NUM_ORDERS = 1 AND CHANNEL_ID in (1,2,3,4)) or (NUM_ORDERS > 1 and CHANNEL_ID in (1,2,3));
您有幾種選擇:
使用或:
SELECT...
WHERE (NUM_ORDERS = 1 AND CHANNEL_ID in (1,2,3,4))
OR
(NUM_ORDERS > 1 and CHANNEL_ID in (1,2,3))
另外,工會兩個:
SELECT...
WHERE NUM_ORDERS = 1 AND CHANNEL_ID in (1,2,3,4)
UNION
SELECT...
WHERE NUM_ORDERS > 1 and CHANNEL_ID in (1,2,3)
然後再編寫查詢如你所提到的 – Ravi