繁体   English   中英

SQL:在2列中检查重复项

[英]SQL: Check for duplicates in 2 columns

我正在构建一个Web应用程序,用户可以在其中回答问题。 我正在尝试运行一个查询,其中将这些答案插入表中,但用户只能回答一次相同的问题。 就我而言,查询必须检查question_id和reply_user的重复项。 (reply_id已被定义为主键)。

例如,当我在表中有答案:question_id = 1和reply_user = John时,John无法再对question_id 1进行答复。但是其他用户当然可以。

我目前正在运行:

INSERT INTO replies (question_id, reply_user, reply_content, reply_anwer)
  VALUES (:questionid, :replyuser, :replycontent, :replyanswer)
  SELECT question_id, reply_user FROM replies WHERE NOT EXISTS (
    SELECT question_id FROM replies
      WHERE question_id = question_id AND reply_user = reply_user
  )

我尝试了WHERE NOT EXISTS,但是找不到解决方案。

谢谢你的帮助

您需要将2个unique字段归档:

ALTER TABLE `replies` ADD UNIQUE (`question_id`,`reply_user`);

然后使用此查询:

INSERT INTO replies (question_id, reply_user, reply_content, reply_anwer)
VALUES (:questionid, :replyuser, :replycontent, :replyanswer)

如果question_idreply_user存在,则查询未运行,否则运行。

在两个键上创建唯一的索引

ALTER TABLE replies ADD UNIQUE `preventDoubleAnswer` (`question_id`, `reply_user`) COMMENT '';

并将数据插入为:

INSERT IGNORE ...

仅当满足唯一键时, INSERT IGNORE才会插入新数据。 注意:如果忽略了IGNORE参数,则会抛出MYSQL错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM