在Sql列中存储多个值

时间:2016-08-02 06:43:26

标签: mysql

我有一个存储ID列表的列。如何实现它?我想将它存储为逗号分隔值,它的数据类型为varchar.But我读它不是一个好的过程。如果不获取整个数据,我将无法对其执行查询。我可能需要在ID列表上执行查询。什么是一个很好的编程解决方案?

1 个答案:

答案 0 :(得分:2)

您需要一个包含2列的单独表 - ID和FOREIGN_ID。您将为每个原始ID插入一个不同的行,并将原始表的主键指定为新表中FOREIGN_ID的值。这个新表的主键是它的2列的组合。 例如,如果您的原始表是

+-------------+-------+---------+
| Primary_Key | ..... | ID_list |
+-------------+-------+---------+
|      7      | ..... |  3,9,4  |
+-------------+-------+---------+
|      9      |  .... |   5,1   |
+-------------+-------+---------+

您的新表格将如下所示

+-------------+-------+      +----+------------+
| Primary_Key | ..... |      | ID | Foreign_ID |
+-------------+-------+      +----+------------+
|      7      | ..... |      | 3  |     7      |
+-------------+-------+      +----+------------+
|      9      |  .... |      | 9  |     7      |
+-------------+-------+      +----+------------+
                             | 4  |     7      |
                             +----+------------+
                             | 5  |     9      |
                             +----+------------+
                             | 1  |     9      |
                             +----+------------+