MYSQL如何在某一列中存储多值类数据,如多个用户id?

问题背景

MySQL中有三个表,分别是“题库表”、“错题表”和“用户表”,现在需要实现不同用户存储不同的错题,不同用户存储的错题可能会重复,同一用户错题不会重复

请问MySQL中如何想在某一列中存储多值类数据,如多个用户id,应该如何设置表结构及类型?

阅读 1.7k
4 个回答
✓ 已被采纳

错题表设置成关系表,存储用户ID和题库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
新手上路,请多包涵

使用关联表,其中一个表存储主要信息,另一个表存储用户ID与主表的关联。
或者Mongodb吧,Json直接搞定。

题库表(QuestionBank)

CREATE TABLE QuestionBank (
    id INT AUTO_INCREMENT PRIMARY KEY,
    question_text TEXT,
    UNIQUE (question_text) -- 确保题目内容不重复
);

用户表(User)

CREATE TABLE User (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    -- 其他用户信息列
);

错题表(UserMistakes)

CREATE TABLE UserMistakes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    question_id INT,
    UNIQUE (user_id, question_id) -- 确保同一用户的错题不重复
);

UserMistakes 表中使用了 user_idquestion_id 的组合来确保同一用户的错题不会重复。也可以程序上做。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题