问题背景
MySQL中有三个表,分别是“题库表”、“错题表”和“用户表”,现在需要实现不同用户存储不同的错题,不同用户存储的错题可能会重复,同一用户错题不会重复
请问MySQL中如何想在某一列中存储多值类数据,如多个用户id,应该如何设置表结构及类型?
MySQL中有三个表,分别是“题库表”、“错题表”和“用户表”,现在需要实现不同用户存储不同的错题,不同用户存储的错题可能会重复,同一用户错题不会重复
请问MySQL中如何想在某一列中存储多值类数据,如多个用户id,应该如何设置表结构及类型?
你思路错误,不需要再一行存储多个用户,你错题库直接用就行比如
错题库
CREATE table wrong_question (
id int(10) not null AUTO_INCREMENT primary key COMMENT '主键',
topic_id int(10) NOT NULL COMMENT'题目id',
user_id int(10) NOT NULL COMMENT'用户id',
create_time datetime NOT NULL COMMENT'创建时间',
update_time datetime NOT NULL COMMENT'更新时间',
INDEX idx_user_id ( `user_id` )
) COMMENT '错题库'
# 寻找用户id为2的错题
select * from wrong_question where user_id =2
CREATE TABLE QuestionBank (
id INT AUTO_INCREMENT PRIMARY KEY,
question_text TEXT,
UNIQUE (question_text) -- 确保题目内容不重复
);
CREATE TABLE User (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE,
-- 其他用户信息列
);
CREATE TABLE UserMistakes (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
question_id INT,
UNIQUE (user_id, question_id) -- 确保同一用户的错题不重复
);
在 UserMistakes
表中使用了 user_id
和 question_id
的组合来确保同一用户的错题不会重复。也可以程序上做。
4 回答1.3k 阅读✓ 已解决
8 回答1.2k 阅读
3 回答1k 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.3k 阅读
1 回答869 阅读✓ 已解决
1 回答664 阅读✓ 已解决
错题表设置成关系表,存储用户ID和题库ID,这样就存储了用户和错题的关系,关联查询就可以得到用户的错题了