鉴于下表:
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都在行中时排除。请注意,订单可以颠倒。
预期产出
id column1 column2
-------------------------
2 4 7
3 4 10
5 14 17
7 14 21
8 16 14
9 21 4
答案 0 :(得分:11)
SELECT * FROM table WHERE (column1=4 XOR column2=14) XOR (column1=14 XOR column2=4)
答案 1 :(得分:2)
试试这个:
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))
答案 2 :(得分:1)
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')
答案 3 :(得分:1)
不知道它是否是最好的方式,但这应该有效:
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)
)
答案 4 :(得分:0)
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))
答案 5 :(得分:0)
SELECT * FROM t WHERE(1,14)中的column1或(4,14)中的column2 除了 SELECT * FROM t WHERE(4,14)中的column1和(4,14)中的column2