我想存储这样的字符串
"1,5,6,7,9,45,20,45,78,81 ......"
我应该使用什么数据类型来保存这些字符串的列?
您要存储的内容称为非规范化数据.MySQL有一些专门用于处理这个问题的功能,但最好的方法是每行存储一个值,如:
id | value
---------------
1 | 1
1 | 5
1 | 6
1 | 7
Run Code Online (Sandbox Code Playgroud)
..等等.因为以逗号分隔的列表:
可以使用MySQL的GROUP_CONCAT函数生成:
SELECT t.id,
GROUP_CONCAT(t.value)
FROM TABLE
GROUP BY t.id
Run Code Online (Sandbox Code Playgroud)这是我推荐的表设置的CREATE TABLE语句:
DROP TABLE IF EXISTS `example`.`list_values`;
CREATE TABLE `example`.`list_values` (
`id` int(10) unsigned NOT NULL default '0',
`val` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`id`,`val`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Run Code Online (Sandbox Code Playgroud)
两个列的主键确保您不能为一个集合重复 - 如果对于您要存储的数据不适用,请将其删除.
您需要使用触发器来强制执行该业务规则.
| 归档时间: |
|
| 查看次数: |
1340 次 |
| 最近记录: |