在mysql列中附加值


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

推荐阅读:在数据库列中存储分隔列表真的有那么糟糕吗?

相关内容

  • 没有找到相关文章

最新更新