我有下一个数据库
| 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/