我需要在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中存储一组数字。
答案 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