0

我目前有 3 个独立测验的测验结果存储在 3 个完全相同的单独表中,所以我在这个结构中有 quiz_results_1、quiz_results_2 和 quiz_results_3:

用户名 | 任务1 | 任务2 | 任务3 | 任务4 | 任务5 | 任务6 | 任务7 | 任务8 | 任务9 | 任务10 | 完全的

我想将这些表合并到 1 个表中,并包含一个 quiz_id 来确定哪些结果适用于哪些测验:

测验ID | 用户名 | 任务1 | 任务2 | 任务3 | 任务4 | 任务5 | 任务6 | 任务7 | 任务8 | 任务9 | 任务10 | 完全的

我可以使用这个查询来更新相关的表,用户名作为主键:

mysql_query("INSERT INTO quiz_results_1 (quest1,quest2,quest3,quest4,quest5,quest6,quest7,quest8,quest9,quest10,username‌​,complete) VALUES $queryData ON DUPLICATE KEY UPDATE quest1=VALUES(quest1),quest2=VALUES(quest2),quest3=VALUES(quest3),quest4=VALUES(‌​quest4),quest5=VALUES(quest5),quest6=VALUES(quest6),quest7=VALUES(quest7),quest8=‌​VALUES(quest8),quest9=VALUES(quest9),quest10=VALUES(quest10),complete=VALUES(comp‌​lete)");

我只想使用一个表,如果该行不存在则插入,或者如果用户名和 quiz_id 存在则更新。

任何帮助,将不胜感激。

4

1 回答 1

0

为 3 个测验设置 3 个表格并不是一个很好的设计。

因此,您选择只使用一张表似乎是合适的,但您应该将主键更改为(quiz_id, username)- 这也将解决UPDATE语句问题。

或者,如果您想为每个用户存储不同的测验版本/历史记录,请将主键更改为:(quiz_id, username, complete)

于 2012-05-28T21:52:44.403 回答