【问题标题】:MySQL: Use data from one table to fill a second table using phpMyAdminMySQL:使用 phpMyAdmin 使用一个表中的数据填充第二个表
【发布时间】:2014-02-01 04:18:58
【问题描述】:

这里是 SQL 难题。

我想使用 phpMyAdmin 根据现有表中的数据填充一个空表。

更具体地说,我想使用mark 中的数据来创建attempt 中的数据。标记中的列是学生编号、测试编号、尝试编号、问题编号和答案。它是一个选择题测试分析工具。

mark (existing)
snum     tnum    anum    qnum    answer
----------------------------------------
1        1        1        1       A
1        1        1        2       C
1        1        1        3       D
1        1        2        1       B    
1        1        2        2       A
1        1        2        3       C


attempt (to be created)
snum     tnum    anum    period
--------------------------------
1        1        1        2013-1      
1        1        2        2013-2         

我可以得到不同的snum、tnum、anum组合如下:

SELECT DISTINCT snum, tnum, anum FROM `mark`

如何使用此调用的结果来填充必要的插入调用?

INSERT INTO `attempt` (snum,tnum,anum,period) VALUES (:s,:t,:a,"2013-1")

理想情况下,我想根据“2013-”加上年数自动完成周期值。我怀疑这是不可能的,所以我只选择所有anum=1 值,并对周期值进行硬编码(然后对每个anum 重复)。

谢谢。

【问题讨论】:

    标签: mysql sql sql-insert


    【解决方案1】:

    使用“INSERT INTO SELECT”语法:

    INSERT INTO 'attempt'(snum,tnum,anum,period) SELECT DISTINCT snum,tnum,anum,CONCAT('2013-',anum) as period FROM mark;
    

    【讨论】:

      【解决方案2】:
      INSERT INTO `attempt`
                  (snum,
                   tnum,
                   anum,
                   period)
      select DISTINCT
        snum,
        tnum,
        anum,
        concat('2013-',anum) as period
      from mark;
      

      【讨论】:

        猜你喜欢
        • 2018-03-31
        • 2017-07-27
        • 2020-05-06
        • 1970-01-01
        • 2017-04-06
        • 1970-01-01
        • 2014-02-04
        • 1970-01-01
        • 2020-05-14
        相关资源
        最近更新 更多