sql >> Database >  >> RDS >> Mysql

mysql gebruikersvariabele toewijzing met count(*)

Zoals @JagaSrik al zei, is er behoefte aan meer informatie over uw gegevens en tabellen om het juiste antwoord te geven. Als u echter een tabel als deze moet wijzigen:

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

naar zoiets als dit:

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

u kunt CURSOR . gebruiken .

Voor dit voorbeeld:

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 ;

Niettemin CURSOR is een manier om je werk te doen en er kunnen effectievere methoden zijn.




  1. Hoe meerdere rijen uit mysql te selecteren met één query en ze te gebruiken in php

  2. Datums ouder dan tijdstempel opslaan in PHP

  3. Omgaan met dubbele primaire sleutels bij invoegen in SQLAlchemy (declaratieve stijl)

  4. MySQL &MariaDB Query Caching met ProxySQL &ClusterControl