目前有一张表,专门用来保存报名信息,表中的字段有活动的唯一标识,报名人员唯一标识,参与时间等三个字段

现在想通过sql查询共同参与项目的报名人员,比如A11111项目和B22222项目两个都有“张三”,“李四”报名,那就要查询这两个项目的标识。
这个如何查效率较高,没有错误
目前有一张表,专门用来保存报名信息,表中的字段有活动的唯一标识,报名人员唯一标识,参与时间等三个字段

现在想通过sql查询共同参与项目的报名人员,比如A11111项目和B22222项目两个都有“张三”,“李四”报名,那就要查询这两个项目的标识。
这个如何查效率较高,没有错误
关注可以使用SQL的多表查询和聚合函数来实现。假设活动唯一标识为activity_id,报名人员唯一标识为user_id,参与时间为join_time,则可以使用如下的SQL语句:
SELECT user_id
FROM table_name
WHERE activity_id IN ('A11111', 'B22222')
GROUP BY user_id
HAVING COUNT(DISTINCT activity_id) = 2;
上述SQL语句中,IN操作符可以用于指定需要查询的活动唯一标识。GROUP BY和COUNT用于计算每个报名人员在指定的活动中出现的次数,HAVING操作符用于筛选出在两个活动中都出现过的报名人员。这样就可以查询到在两个活动中都参与过的报名人员的唯一标识。使用索引和优化SQL语句可以进一步提高查询效率。