簡體   English   中英

SQL select 當滿足一個條件或另一個條件但不是同時滿足兩個條件時

[英]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

當在column1column2中選擇數字 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM