在mysql中存储一组数字

时间:2013-12-29 05:53:42

标签: mysql database-design set

我需要在MYSQL中存储一组整数。问题是:我有一个id(整数)。每个id都映射到一组数字。集合中的数字可以包含1到160之间的值。所以我的表格应该是{id,set}结构。每个id'set也可以有不同的长度(最多40个数字)。 例如:

id   set
1    {2 45 46 67 89 155}
2    {1, 11 12 34 56 67 68 79 80 134 145}

我在MYSQL中尝试过SET数据类型。我把它定义为 CREATE TABLE mytable(id NUMBER PRIMARY KEY,mycol SET('1','2','3','4'...)) 但问题是该集只允许定义64个elemnet。

注意:我需要除了创建映射表以外的选项:

id   setno
1     2
1     45
....... and so on

任何人都可以建议另一种方法在MYSQL中存储一组数字。

2 个答案:

答案 0 :(得分:0)

您描述的表格结构是正确的方法。

在您呈现数据的方式中,创建一个表格,将ID映射到Sento

ID是主键

这样你就有了:

ID Sento
1 2
1 45
1 46
...
1 155

然后有一个SQL说:

SELECT ID, GROUP_CONCAT(Sento, SEPARATOR ', ')
FROM Table
GROUP BY ID

希望这有帮助

答案 1 :(得分:0)

创建子表以保存数字,每行一个:

create table set_number (
    set_id int,
    num int
);

然后插入您的号码。要将它们作为一个CSV值,请使用group_concat(),例如:

select t.id, group_concat(s.num) set
from mytable t
join set_nimber s
    on t.set_id = s.set_id
group by t.id