sql >> データベース >  >> RDS >> Mysql

count(*)を使用したmysqlユーザー変数の割り当て

    @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
    

    カーソルを使用できます 。

    この例の場合:

    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 ;
    

    それにもかかわらず、カーソル はあなたの仕事をする方法であり、より効果的な方法があるかもしれません。




    1. Apache 2.2、MySQL 5.0、およびPHP5を使用したFreeBSD6.0へのWebサーバーのインストール–パート3

    2. トランザクション、行レベルのロック、および外部キーをサポートします

    3. ローカルコンピュータ上のMySQLサービスが開始してから停止しました

    4. 修正:「現在のデータベースのバックアップがないため、バックアップログを実行できません。」 SQL Server /SQLEdgeで