我有一个表,有如下列,例如:

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小提琴演示


这与IN的版本相反.

No it is not,这和你在问题中使用OR是一样的.


为了澄清这一点:

谓词IN或集合成员定义为1:

在此处输入图像描述

其中Value Expression可以是2:

在此处输入图像描述

所以这样做很好,使用值表达式123,这是一个文本.


1, 2: Images from: SQL Queries for Mere Mortals(R): A Hands-On Guide to Data Manipulation in SQL

Mysql相关问答推荐

使用由其中一个表的列规定的条件连接两个表

MySQL 8.0.34-从后端系统管理AWS RDS上的持久连接内存使用

MySQL逻辑全部

docker-compose:无法将应用程序服务连接到 mysql 数据库,收到错误:用户‘root’@‘localhost’访问被拒绝(使用密码:YES)

在两个日期之间生成每个月的1行数据.

如何使用sql查询在日期列中按值和最大值分组的表中添加列?

仅计算 DATEDIFF (MySQL) 中的工作日

我在 mysql 查询中需要帮助,我想在年龄之间按年龄过滤器分组,并显示 0 计数之间找不到的数据

检索按键列值分组的最新日期 (MySql)

mysql insert into select join - 通过连接表将值从一列复制到另一表

如何使用 express.js 和 react.js 删除连接表中的元素和关联元素

MySQL UPDATE 锁会因为连续的 SHARE 锁而饿死吗?

mysql - 如何加入表中的动态列

MySQL 如何处理并发插入?

索引和多列主键

如何通过一个查询批量更新 mysql 数据?

将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是什么?

如何用一系列日期填充表格?

MySQL查询/子句执行顺序

MySQLgo 除非数字字符进行比较