在 MySQL 表中,我有一个字段,包含给定记录的这个值:“1908,2315,2316”
这是我的 sql 查询:
SELECT * FROM mytable WHERE 2316 IN (myfield)
我得到了 0 个结果!
我试过这个:
SELECT * FROM mytable WHERE 2315 IN (myfield)
仍然是 0 个结果
然后我尝试了这个:
SELECT * FROM mytable WHERE 1908 IN (myfield)
没想到我用1908搜索得到了记录!用2315和2316搜索时应该怎么做才能同时获得记录?我错过了什么?
谢谢
最佳答案
您似乎在字段中存储以逗号分隔的值。这很糟糕,很糟糕,很糟糕。您应该使用联结表,每个值一行。
但是,有时您会被特定结构的数据困住。如果是这样,MySQL 提供了 find_in_set()
函数。
SELECT *
FROM mytable
WHERE find_in_set(2316, myfield) > 0;
关于MySQL In 子句没有给出正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27824357/