1、用一个分组查询的结果集作为更新另一张表的数据
如分组统计报名表中各个活动的报名人数,然后根据活动id以及人数去更新活动表中的报名人数字段
UPDATE event e
INNER JOIN (SELECT event_id,count(1) as num FROM event_sign_up GROUP BY event_id) s ON e.id=s.event_id
SET e.num_sign_up=s.num
再如查询活动名及报名人数:
SELECT `event`.`subject`,s.num
FROM `event`
LEFT JOIN (SELECT event_id,count(1) as num FROM event_sign_up GROUP BY event_id) s ON `event`.id=s.event_id
ORDER BY s.num DESC
注:
sql中left join 、right join 、inner join之间的区别:
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等(根据条件ON)的记录 ;左表有,右表没有的补空NULL。
right join(右联接)返回包括右表中的所有记录和左表中联结字段相等(根据条件ON)的记录;右表有,左表没哟的补空NULL。
inner join(等值连接) 只返回两个表中联结字段相等(根据条件ON)的行,不相等的忽略。
来源:CSDN
作者:学以致用HT
链接:https://blog.csdn.net/qq_40348465/article/details/103858013