首页 > 解决方案 > 如何解决这个复杂的 MySQL Query 问题

问题描述

我遇到了复杂的 PHP MySQL 查询问题。我希望你能帮助我。我尽我所能,尽可能清楚地解释一切。

表活动

activityId      name            
1               Activity-01
2               Activity-02
3               Activity-03
4               Activity-04 

标签活动参与者

activityParticipantId   activityId      personId    date            
55                      1               28115       2020-05-28
66                      2               34496       2020-05-28
67                      3               34635       2020-05-28
88                      4               12992       2020-05-28

此处要编写的查询必须满足这些条件。

不幸的是我无法解决这个问题。我希望你能帮助我。

提前致谢

标签: phpmysql

解决方案


这实际上很容易——您只需要一个对两个相关列的组合的 UNIQUE 约束:

ALTER TABLE activityParticipant
ADD UNIQUE (activityId, personId);

现在,当您尝试插入与另一行重复的行时(例如,人 235625 想要第二次注册活动 1),查询将失败并出现错误。

要解决“同一个人在同一日期没有两个活动”问题,您可以对personIddate执行相同操作:

ALTER TABLE activityParticipant
ADD UNIQUE (date, personId);

现在人 235625 不能在同一日期注册两个不同的活动。


推荐阅读