2017-06-16 55 views
-4

我有一個表,並希望執行以下使用where。我想選擇所有具有NUM_ORDERS = 1的行,其中CHANNEL_ID in (1,2,3,4)以及另外的所有行都是NUM_ORDERS > 1CHANNEL_ID in (1,2,3)。我怎樣才能結合這兩個條件?哪裏有不同的條件

感謝您的幫助。

+0

然後再編寫查詢如你所提到的 – Ravi

回答

5

以下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)) 
1

這將是這樣的:

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)) 
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)); 
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)