name | id |
---|---|
Meete | 1,2 |
Reza | 2,4 |
dexer | Null |
这对于注释来说太长了。
只是不要将CSV值存储在关系数据库中!这基本上违背了关系数据库的目的。它不安全、不可靠,而且效率很低。
你所问的问题对你来说可能看起来很简单,但实现起来很乏味:这通常需要将字符串拆分成行,解决一些问题,然后重新加入字符串。这清楚地表明你的设计不适合。
CSV列表中的每个值都应该存储在一个单独的行中,如下所示:
name id
--------------
Meete 1
Meete 1
Reza 2
Reza 4
有了(name, id)
上的主键,你所要求的就像一样简单
insert into mytable (name, id)
values ('Meete', 3), ('Meete', 4), ('Reza', 3), ('Reza', 4), ('dexer', 3), ('dexer', 4)
on duplicate key update name = values(name);
您可以随时根据需要生成CVS列表:
select name, group_concat(id order by id) as all_ids
from mytable
group by name
推荐阅读:在数据库列中存储分隔列表真的有那么糟糕吗?