在mysql中存储一组数字

在mysql中存储一组数字,mysql,database-design,set,Mysql,Database Design,Set,我需要在MYSQL中存储一组整数。问题是:我有一个id(整数)。每个id都映射到一组数字。集合中的数字可以有1到160之间的值。所以我的表应该是结构{id,set}。此外,每个id集可以有不同的长度(最多40个数字)。 例如: 我在MYSQL中尝试了SET数据类型。我把它定义为 创建表mytable(id号主键,mycl集合('1'、'2'、'3'、'4'…) 但问题是集合只允许定义64个元素 注意:我需要创建映射表以外的其他选项,如下所示: id setno 1 2 1 4

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

我在MYSQL中尝试了SET数据类型。我把它定义为 创建表mytable(id号主键,mycl集合('1'、'2'、'3'、'4'…) 但问题是集合只允许定义64个元素

注意:我需要创建映射表以外的其他选项,如下所示:

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

有人能推荐另一种在MYSQL中存储一组数字的方法吗。

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

在你展示数据的过程中,创建一个表,将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

希望这有助于创建子表来保存数字,每行一个:

create table set_number (
    set_id int,
    num int
);
然后插入您的号码。要将它们作为一个值,请使用以下命令:

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

你想做什么,场景?实际的问题是android类别-权限映射。每个类别(预定义)几乎有30-40个标准权限(160个)。是的,这是我计划使用的选项之一,如我的问题(映射表)中所述。然而,我想探索在Mysql中存储一组数字的其他方法。另一种方法是使用Sento的
文本
字段,并将数据存储为文本,这是非常低效的。是的,每字符1字节的效率非常低。谢谢你的建议
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