phpmyadmin在一列中有多个值

时间:2017-12-04 19:09:14

标签: php mysql sql phpmyadmin xampp

我想问你,是否可以在phpmyadmin中创建一个列,我可以在一列中插入(导入)多个值。例如,我创建了一个名为mytable的表,然后添加了column1(值为1),现在我想添加column2(值为3 5 8)。

当我尝试这样做时,它只显示其中值为3的column2 ...它忽略了5和8。

2 个答案:

答案 0 :(得分:3)

你可以,但不要

从技术上讲,单个数据库字段可以通过将它们存储在以逗号分隔的字符串或JSON编码的字符串中来存储多个值。许多较新版本的MySql也支持在Json Datatype中存储复杂对象,它可以容纳任何东西。但是,执行此操作通常是个坏主意,并且违背了关系数据库的意图。

而是考虑为每个值创建一个单独的列。

更好,将可选值存储在另一个表中。

不是尝试定义单个列来存储不同的数据,而是创建一个新表,该表引用第一个表上的行。以下是可解决您问题的Many-to-One数据关系示例。

table a
-------
id, name, column1
1,  'A',  1
2,  'B',  5

table b
------- 
id, a_id, column2
81, 1,    3
82, 1,    5
83, 1,    8
94, 2,    1
95, 2,    2
96, 2,    3
97, 2,    4
98, 2,    5

通过连接这两个表,您可以获得类似的结果集,它更灵活,可排序/可搜索/可过滤。

SELECT a.id, a.name, a.column1, b.column2
FROM a
LEFT JOIN b ON a.id = b.a_id

答案 1 :(得分:0)

" 的答案我能做到吗"是"是" 。但是," 的答案我应该这样做" " 试图找到另一种方式" 。例如,如果我有一个字符串,如:

SELECT
    ID
    , Start
    , [Stop]
    , [Type]
FROM
    (
        SELECT
            ID
            , MIN(Start) Start
            , MAX([Stop]) [Stop]
            , [Type]
            , [Region]
        FROM
            (
                SELECT
                    ID
                    , Start
                    , [Stop]
                    , [Type]
                    , SUM([First]) OVER (PARTITION BY ID ORDER BY [Start]) Region
                FROM
                    (
                        SELECT
                            ID
                            , Start
                            , [Stop]
                            , [Type]
                            ,
                                CASE
                                    WHEN LAG([Type], 1, NULL) OVER (PARTITION BY ID ORDER BY [Start]) = [Type]
                                    THEN 0
                                    ELSE 1
                                END [First]
                        FROM YourTable
                    ) Q
            ) Q2
        GROUP BY
            ID
            , [Type]
            , [Region]
    ) Q3
ORDER BY Region

如果我执行查询将其插入表列字段,它将插入它。如果这是您解决算法的唯一方法,那么我建议您插入使用$mystring = "1 2 3 4 5"; /分割的数据值,这样当您检索时,您可以-他们并获取他们的值,但我不建议这样做。相反,我建议你在尝试这个问题之前尝试找到另一个问题的解决方案。