[英]SQL select when one condition or another are met but not both
給定下表:
id column1 column2
-------------------------
1 3 8
2 4 7
3 4 10
4 4 14
5 14 17
6 10 27
7 14 21
8 16 14
9 21 4
10 30 3
當在column1
或column2
中選擇數字 4 和 14 時查詢選擇行的最佳方法是什么,但是當數字 4 和數字 14 都在行中時排除。 請注意,順序可以顛倒。
預計 output
id column1 column2
-------------------------
2 4 7
3 4 10
5 14 17
7 14 21
8 16 14
9 21 4
SELECT * FROM table WHERE (column1=4 XOR column2=14) XOR (column1=14 XOR column2=4)
嘗試這個:
SELECT *
FROM mytable
WHERE ((column1 = 4 AND column2 != 14)
OR (column2 = 14 AND column1 != 4)
OR (column1 = 14 AND column2 != 4)
OR (column2 = 4 AND column1 != 14))
SELECT id, column1, column2
FROM table
WHERE column1 in ('4','14') AND column2 NOT IN ('4','14')
OR column2 in ('4','14') AND column1 NOT IN ('4','14')
不知道這是不是最好的方式,但這應該有效:
SELECT * FROM t
WHERE (
column1 IN (4,14)
AND
column2 NOT IN (4,14)
) OR (
column1 NOT IN (4,14)
AND
column2 IN (4,14)
)
with cte as(
SELECT * FROM t WHERE column1 in(4,14) or column2 in(4,14)
)
SELECT * FROM t WHERE (column1 in(4,14) or column2 in(4,14)) and id not in(select id from cte where column1 in(4,14) and column2 in(4,14))
SELECT * FROM t WHERE(4,14)中的column1或(4,14)中的column2除了SELECT * FROM t WHERE(1,14)中的column1和(4,14)中的column2
select * 來自表,其中(column1=4 或 column2=14)而不是(column1=4 和 column2=14);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.