Mysql选择值90和45但不是90,类型1这里是我的样本表
value | type | status
90 1 0
90 1 1
90 0 0
90 0 1
45 1 0
45 1 1
我的代码未获得所需的输出
SELECT * FROM table WHERE type IN (1, 0) AND value != 90
所需的输出是:
value | type | status
90 0 0
90 0 1
45 1 0
45 1 1
答案 0 :(得分:2)
你正在寻找一个相当基本的复合条件 - 你想要“所有类型= 0”或“除了值= 90时所有类型= 1”,这将表示为
WHERE (type = 0) OR (type = 1 AND value != 90)
(基于您自己的查询)或
WHERE (value = 45) OR (VALUE = 90 AND type != 1)
(根据你的第一句话。)
答案 1 :(得分:1)
你可以尝试类似的东西:
create table test (val int, type int, status int);
insert into test values
(90 ,1 ,0),
(90 ,1 ,1),
(90 ,0 ,0),
(90 ,0 ,1),
(45 ,1 ,0),
(45 ,1 ,1);
select *
from test
where (val = 90 and type != 1) or val = 45;
| val | type | status |
|-----|------|--------|
| 90 | 0 | 0 |
| 90 | 0 | 1 |
| 45 | 1 | 0 |
| 45 | 1 | 1 |
SQLFiddle示例:http://sqlfiddle.com/#!9/052c0/1