这里的SQL难题。
我想使用phpMyAdmin根据现有表中的数据填充空表。
更具体地说,我想使用mark
中的数据在attempt
中创建数据。标记中的列是student_number,test_number,attempt_number,question_number和答案。它是一种多选测试分析工具。
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自动完成期间值。我怀疑这是不可能的,所以我只选择所有anum=1
值,然后硬编码周期值(然后重复每个anum
)。
感谢。
答案 0 :(得分:2)
使用“INSERT INTO SELECT”语法:
INSERT INTO 'attempt'(snum,tnum,anum,period) SELECT DISTINCT snum,tnum,anum,CONCAT('2013-',anum) as period FROM mark;
答案 1 :(得分:1)
INSERT INTO `attempt`
(snum,
tnum,
anum,
period)
select DISTINCT
snum,
tnum,
anum,
concat('2013-',anum) as period
from mark;