mysql - 如何在 MySQL 中选择这些特定的行?

标签 mysql

在 MySQL 表中,我有一个名为“Tag”的字段,它可能包含多个以逗号分隔的值。

我想选择 Tag 字段包含值“1”的行。

我将如何编写我的 MySQL 语句以便选择标记值为“1”和“1,Cars”的行, 但排除 Tag 值为“17”和“17,Cars”的行?

问题是我正在使用“LIKE”运算符,但这会导致所有这四行都被选中。

谢谢。

最佳答案

FIND_IN_SET 将搜索以逗号分隔的列表,例如:

SELECT FIND_IN_SET('b','a,b,c,d');

在这种情况下,类似

SELECT tag FROM table
WHERE FIND_IN_SET('1', tag) > 0

应该可以解决问题。

编辑:当没有找到匹配项时它实际上返回 0,因此 NULL 检查是错误的。

关于mysql - 如何在 MySQL 中选择这些特定的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3664812/

相关文章:

mysql - 查找 mysql 时间的间隙

python - 改进 Django 搜索

php - 谷歌图表中过去 30 天输出的日间总销售额

php - 选择任何数据库时,它只显示表的数量而不是所选数据库的所有表的名称

Mysql 触发器将数字添加到重复键上的新值

sql - 当连接更改时,MySQL SELECT 将永远运行

mysql - 为什么我不能添加这个外键约束?

mysql - 你能索引子查询吗?

PHP/MySQL 关系数据库模式的搜索代码和逻辑

mysql - 在一个 SQL 查询中合并两个表并使日期值唯一