sql >> Databasteknik >  >> RDS >> Mysql

mysql användarvariabel tilldelning med count(*)

Som @JagaSrik sa, det finns ett behov av mer information om dina data och tabeller för att ge rätt svar. Men om du behöver ändra en tabell så här:

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

till något sånt här:

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

du kan använda CURSOR .

För det här exemplet:

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 ;

Ändå CURSOR är ett sätt att göra ditt arbete och det kan finnas mer effektiva metoder.




  1. Hur kopierar jag SQL Azure-databas till min lokala utvecklingsserver?

  2. Transaktioner fungerar inte för min MySQL DB

  3. Capistrano:Hur distribuerar man MySQL-databas för en PHP-applikation?

  4. Villkorlig WHERE-sats i SQL Server