MySQL In 子句没有给出正确的结果

标签 mysql sql

在 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/

相关文章:

MySQL "mysql there is no such grant defined for user"

sql - 如果利润小于项目成本的 55%,如何编写这个 select 语句?

mysql - 连接表sql的问题

mysql - 将 UTC 纪元转换为本地时间戳,用于 SQL 查询

sql - 无法确定元数据,因为每个代码路径都会导致错误;请参阅其中一些以前的错误

php - 何时使用 transient ,何时不使用?

php - query_cache_min_res_unit;它是什么以及它有什么作用?

php - 如何防止 PHP 中的 SQL 注入(inject)?

mysql - key 'groser' 的重复条目 'PRIMARY'

sql - mySQL 递归计数()