我有一些这样的表的数据库:
- fruitsTable
id name numberOfPeople
1 apple 3
2 orange 4
3 cherry 1
- peopleTable
person fruit
john apple
john orange
john cherry
jack apple
jack orange
ryan apple
ryan orange
meg orange
认为peopleTable每天都在变化,并且包含成千上万的行。另外,fruitsTable有超过一千行。
如何定期计算numberOfPeople列?
我计划设置一个日常cron作业,它将触发一个SQL命令以计算数量。
假设我对SQL中的那些JOIN命令没有经验,那么我需要使用哪种SQL命令而不会出现性能问题?
我建议你改变peopleTable
表以遵循结构
peopleTable
person fruit_id
john 1
...
并且通过问题,您需要按照sql
SELECT a.id, COUNT(*) as count FROM fruitsTable a
LEFT JOIN peopleTable b ON a.id = b.fruit_id
GROUP BY a.id
将输出以下内容(示例数据)
id count
1 2
2 4
...
并更新查询
UPDATE fruitTable a SET numberOfPeople = (
SELECT COUNT(*) FROM peopleTable b WHERE a.id = b.fruit_id GROUP BY b.fruit_id
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句