如何使用sql中的where(两个条件)选择多行?

时间:2016-10-03 21:59:10

标签: sql

当条件基于一列时,我可以使用IN,AND或OR,但如果条件基于两列,那么如何编写查询?例如,我需要在以下行中将第1列的值设置为NULL:第2列='红色' AND列3 ='星期一',第2栏='黄色'第3列='星期二' '红色'或者'黄色'在第2列中并不是唯一的,对于' Monday'和'星期二'我需要更新很少的行。如何在一个查询中执行此操作?谢谢!

column1   column2    column3    
1         red        Monday    
2         red        Tuesday    
3         yellow     Monday    
4         yellow     Tuesday    
5         green      Wednesday

结果如下:

column1   column2    column3    
NULL         red        Monday    
2         red        Tuesday    
3         yellow     Monday    
NULL         yellow     Tuesday    
5         green      Wednesday

2 个答案:

答案 0 :(得分:1)

WHERE子句归结为一个简单的真/假值:true - 行匹配,所以做一些事情。 false - 不匹配,不做任何事。

如果您有多个独立条件,那么

WHERE (condition1) OR (condition2) OR ...

每个子条件都可以根据需要任意复杂/简单,包括拥有自己的in子句:

WHERE (foo IN ('a','b','c')) OR (bar IN ('p','q', 'r')) OR (baz = 42) 

答案 1 :(得分:1)

UPDATE yourTable SET column1 = NULL WHERE (column2 = 'red' AND column3 = 'Monday') OR (column2 = 'yellow' AND column3 = 'Tuesday')