MySQL常用积累

喜夏-厌秋 提交于 2020-01-24 05:49:57

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)的行,不相等的忽略。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!