[英]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_id
, reply_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.