我尝试使用用户变量进行查询,但是我不明白为什么,我无法在查询中更新变量。我想总结每天的分组结果以制作图表。真的很简单。
SET @total := 0; SELECT "total Register", li.registerDate, @total := COUNT(*) + @total as registerNumber, @total FROM calendar c3 INNER JOIN ( SELECT c2.ide_calendar as ide_calendar, c2.name, DATE_FORMAT(i.date_creation, "%Y-%m-%d") as registerDate FROM calendrar c2 LEFT JOIN inscription i ON i.ide_calendrar = c2.id ) li ON li.ide_calendrar = c3.id WHERE c3.id = 9291 GROUP BY registerDate
真是奇怪 我正在查看mysql文档,但没有任何效果。
编辑:我希望每天有一些统计数据可以注册的总数。
Day 1 : 2 register then total = 2 Day 2 : 1 register then total = 3.
我过去使用它,没有问题。
编辑2:有关查询的实际数据结果的示例。
total Inscription | 2017-07-10 | 2 total Inscription | 2020-04-20 | 2 total Inscription | 2020-04-21 | 3 total Inscription | 2020-06-17 | 4 total Inscription | 2020-06-18 | 2
我想要的是:
total Inscription | 2017-07-10 | 2 total Inscription | 2020-04-20 | 4 total Inscription | 2020-04-21 | 7 total Inscription | 2020-06-17 | 11 total Inscription | 2020-06-18 | 13
这就是为什么我使用变量。在查询上使用起来更简单。但是这次,我不明白。
非常感谢。
正如@JagaSrik所说,有必要提供有关您的数据和表的更多信息以给出正确的答案。但是,如果您需要像这样更改表:
name | date | id ----------------------------------------- total Inscription | 2017-07-10 | 2 total Inscription | 2020-04-20 | 2 total Inscription | 2020-04-21 | 3 total Inscription | 2020-06-17 | 4 total Inscription | 2020-06-18 | 2
像这样:
date | total ----------------------------------------- 2017-07-10 | 2 2020-04-20 | 4 2020-04-21 | 7 2020-06-17 | 11 2020-06-18 | 13
您可以使用 CURSOR 。
对于此示例:
DELIMITER $$ CREATE PROCEDURE `countIds`() BEGIN DECLARE finished INTEGER DEFAULT 0; DECLARE total INTEGER DEFAULT 0; DECLARE theCount INTEGER DEFAULT 0; DECLARE theDate varchar(100) DEFAULT ""; DEClARE curCount CURSOR FOR SELECT `id`,`date` FROM table1; DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1; OPEN curCount; getCount: LOOP FETCH curCount INTO theCcount,theDate; IF finished = 1 THEN LEAVE getCount; END IF; SET total = total + theCount; select theDate, total; END LOOP getCount; CLOSE curCount; END$$ DELIMITER ;
但是, CURSOR 是完成工作的一种方法,并且可能会有更有效的方法。