gpt4 book ai didi

mysql - 如何将同一表中的 SUM() 和 COUNT() 表更新到不同的列

转载 作者:行者123 更新时间:2023-11-29 03:59:33 25 4
gpt4 key购买 nike

我目前没有为我的网页执行此操作以显示表格中的数据,现在加载页面需要更长的时间,因为越来越多的数据进入数据库使得查询耗时。在我的脑海中,我希望按如下方式更新一个表,这样我就可以查询该表,而不是通过 SELECT 函数对内容运行额外的心律失常。我计划在 while 循环中运行类似这样的东西来循环 user 变量的所有迭代。

UPDATE table
SET total = SUM(sales)
SET orders = COUNT(order)
GROUP by user
WHERE user=$id

最佳答案

尝试使用来自 left join (sum + count) 表的更新值

update T T1
left join (
select `user`,sum(`sales`) newtotal,count(`order`) neworders
from T
group by `user`
) T2 on T1.`user` = T2.`user`
set T1.total = T2.newtotal,T1.orders = T2.neworders

测试 DDL:

CREATE TABLE T
(`user` varchar(4), `sales` int, `order` varchar(7), `total` int, `orders` int)
;

INSERT INTO T
(`user`, `sales`, `order`, `total`, `orders`)
VALUES
('xx01', 100, 'order01', 0, 0),
('xx02', 200, 'order02', 0, 0),
('xx02', 400, 'order03', 0, 0),
('xx03', 300, 'order04', 0, 0),
('xx03', 500, 'order05', 0, 0)
;

结果:

| user | sales |   order | total | orders |
|------|-------|---------|-------|--------|
| xx01 | 100 | order01 | 100 | 1 |
| xx02 | 200 | order02 | 600 | 2 |
| xx02 | 400 | order03 | 600 | 2 |
| xx03 | 300 | order04 | 800 | 2 |
| xx03 | 500 | order05 | 800 | 2 |

TEST DEMO LINK

关于mysql - 如何将同一表中的 SUM() 和 COUNT() 表更新到不同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51296435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com