处理这个问题的正确方法是使用一个单独的规范化表来保存学生 ID 和标记。用于INSERT IGNORE
将学生信息插入student
表格,然后将分数插入marks
表格,每个学生多行。这还允许您存储日期以及添加到表格中的每个标记或其他信息(例如它属于哪个课程)。请注意,我通常不建议使用INSERT IGNORE
来创建行,而是首先在代码中检查该行是否存在,如果不存在则仅插入。
CREATE TABLE marks (
markID INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
studentID INT NOT NULL,
mark VARCHAR() NOT NULL,
markdate DATETIME NOT NULL
);
/* First execute the insert, which will ignore errors if it already exists */
INSERT IGNORE INTO student (ID, name) VALUES ($id, '$name');
/* Then insert the new marks. Loop to add as many new marks as needed */
INSERT INTO marks (studentID, mark, markdate) VALUES ($id, '$marks', NOW());