mysql - 检查多个列的一个值

标签 mysql sql select query-optimization

例如,我有一个包含这样列的表:

id,col1,col2,col3,col4

现在,我想检查 col1, col2, col3, col4ANY 是否有传入的值。

要做到这一点还有很长的路要走..

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:

enter image description here

Value Expression 可以是 2:

enter image description here

所以这样就可以了,使用值表达式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/

相关文章:

mysql - 将两个表组合在一起以获得所有列,但我需要单独的数据行而不是一行

Mysql从一张表中选择,但与来自2张表的id和一个参数进行比较

MySQL:返回 Y 字前后的 X 个字

mysql - 如何在 magento 中对 mysql 进行转义?

php - MySQL 查询问题 - INSERT INTO

mysql - 当我尝试使用 docker-compose 为 Nodejs 和 mysql 应用程序运行 docker 容器时,出现端口使用错误

mysql - SQL:使用外键插入3个表

mysql - 从mysql中获取数据并进行比较

MySQL 从多个表中选择和最近的记录

php - Select2 - 使用 mysql 数据选择的值不正确