sql >> Databáze >  >> RDS >> Mysql

přiřazení uživatelské proměnné mysql s count(*)

Jak řekl @JagaSrik, pro správnou odpověď je potřeba více informací o vašich datech a tabulkách. Pokud však potřebujete změnit tabulku takto:

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

na něco takového:

     date      |  total
-----------------------------------------
   2017-07-10  |   2
   2020-04-20  |   4
   2020-04-21  |   7
   2020-06-17  |   11
   2020-06-18  |   13

můžete použít CURSOR .

Pro tento příklad:

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 ;

Přesto CURSOR je způsob, jak dělat svou práci a mohou existovat efektivnější metody.




  1. Integrace C# a MySql

  2. Jak vybrat optimalizované datové typy pro sloupce [specifické pro innodb]?

  3. Problémy Quartz JDBCJobStore s MySQL

  4. Jak vyladit nebo otestovat výkon kódu PLSQL v Oracle D2k Forms