sql >> Database teknologi >  >> RDS >> Mysql

mysql brugervariabel tildeling med count(*)

Som @JagaSrik sagde, er der behov for mere information om dine data og tabeller for at give det rigtige svar. Men hvis du har brug for at ændre en tabel som denne:

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

til noget som dette:

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

du kan bruge CURSOR .

For dette eksempel:

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 ;
 

Ikke desto mindre CURSOR er en måde at udføre dit arbejde på, og der kan være mere effektive metoder.




  1. Sådan konverteres mySQL Query til Laravel 5.4 Query Builder

  2. Hent DB-ejers navn i PostgreSql

  3. grails/mysql tidszoneændring

  4. laravel 5.6 masseindsættelse af json-data