Mysql 当字段包含逗号分隔的值时,Where子句返回错误的结果
我有一个表,其中包含id列和值列,其中包含逗号分隔的值,因此我希望在值列等于id列时获取行 表格结构为:Mysql 当字段包含逗号分隔的值时,Where子句返回错误的结果,mysql,mariadb,Mysql,Mariadb,我有一个表,其中包含id列和值列,其中包含逗号分隔的值,因此我希望在值列等于id列时获取行 表格结构为: CREATE TABLE `test` ( `id` INT NOT NULL AUTO_INCREMENT , `value` VARCHAR(255) NOT NULL , PRIMARY KEY (`id`) ) ENGINE = InnoDB; INSERT INTO `test` (`id`, `value`) VALUES
CREATE TABLE `test` (
`id` INT NOT NULL AUTO_INCREMENT ,
`value` VARCHAR(255) NOT NULL ,
PRIMARY KEY (`id`)
) ENGINE = InnoDB;
INSERT INTO `test` (`id`, `value`) VALUES
(NULL, '1,2,3,4,5'),
(NULL, '1,2,3,4,5');
查询
SELECT * FROM `test` WHERE id = value
由于没有匹配,查询应该不会返回任何结果,但下面是返回的结果:
服务器版本:5.5.52-MariaDB-MariaDB服务器
我有什么遗漏吗
谢谢将数据保存为csv是非常糟糕的数据库设计。您应该规范化数据库。同时,您可以了解
find_In_set
我不想查找值列中是否存在id,我想检查value是否只包含一个id,并且它是同一行中的idvalue
是mysqlI gues中的一个关键字如果您尝试从'test'WHERE cast(`id`as CHARACTER)=`value`选择*from`test` WHERE cast(`id`as CHARACTER)=`value`您得到了期望的结果,则会自动从varchar对话到inti