MySql SET交集

标签 mysql

我有下一个数据库

|   ID   |  numbers   |
|--------|------------|
|    1   | 1,2,3      |
|    2   | 4,5,6      |
|    3   | 2,3,4      |

要检索 numbers 包含给定数字的所有行很容易:

SELECT * FROM mydb WHERE FIND_IN_SET(3, numbers)

这将返回第 1 行和第 3 行

但现在我想传递一个数组/一组数字,并希望检索所有在 numbers 中出现至少一个数字的条目,即两组的交集不为空 像这样的东西:

SELECT * FROM mydb WHERE SET_INTERSECT('2,4', numbers)!=NULL

这应该返回所有行,因为每行包含 2 和/或 4。

上述方法无效。这在 mysql 中可能吗?

谢谢!

最佳答案

为什么不使用 OR 呢?

SELECT * FROM mydb WHERE FIND_IN_SET(2, numbers) or FIND_IN_SET(4, numbers) 

关于MySql SET交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12277457/

相关文章:

php - 在 xampp 上安装 cake php

mysql - 如何创建包含学校上课日期的行?

ASP.NET配置MySQL数据库?

mysql - 从单个文件恢复所有 MySQL 数据库

php - 使用 PHP 和 JavaScript 读取 blob 数据

php - 三个表和 belongsTo() 函数的 Laravel Eloquent 关系映射问题

mysql - 如何忽略MySQL中的重复行?

php - sql_查询 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

php - 在 PHP 行中格式化时间

mysql - 选择两个不同值中的最小值