例如,我有一个包含这样列的表:
id,col1,col2,col3,col4
现在,我想检查 col1, col2, col3, col4
的 ANY
是否有传入的值。
要做到这一点还有很长的路要走..
SELECT * FROM table WHERE (col1 = 123 OR col2 = 123 OR col3 = 123 OR col4 = 123);
我猜是 IN
的相反版本。
有没有更简单的方法来做我想做的事?
最佳答案
您可以使用 IN
谓词,如下所示:
SELECT * FROM table WHERE 123 IN(col1, col2, col3, col4);
SQL Fiddle Demo
it's the opposite version of IN.
不,不是,这与您在问题中使用 OR
的方式相同。
澄清这一点:
谓词IN
或集合成员定义为1:
Value Expression
可以是 2:
所以这样就可以了,使用值表达式123
,它是一个字面量。
1, 2: 图片来自:SQL Queries for Mere Mortals(R): A Hands-On Guide to Data Manipulation in SQL
关于mysql - 检查多个列的一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13916400/