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

mysqlのグループで削除せずにすべてのレコードを取得する方法

    MySQL 8以降を使用している場合は、ROW_NUMBERを使用してこれを処理できます :

    WITH cte AS (
        SELECT *, ROW_NUMBER() OVER (PARTITION BY Date ORDER BY Time) rn
        FROM attendancedata
        WHERE EnrolledID = 23
    )
    
    SELECT
        Date,
        MAX(CASE WHEN rn = 1 THEN Time END) AS PO1,
        MAX(CASE WHEN rn = 2 THEN Time END) AS PO2,
        MAX(CASE WHEN rn = 3 THEN Time END) AS PO3,
        MAX(CASE WHEN rn = 4 THEN Time END) AS PO4,
        MAX(CASE WHEN rn = 5 THEN Time END) AS PO5,
        MAX(CASE WHEN rn = 6 THEN Time END) AS PO6,
        MAX(CASE WHEN rn = 7 THEN Time END) AS PO7
    FROM cte
    GROUP BY
        Date
    ORDER BY
        Date;
    

    ただし、一般に、日付と時刻を単一のdatetimeに保存することが望ましいことに注意してください。 MySQLのフィールド。この特定のケースでは、うまくいきましたが、これが常に当てはまるとは限りません。



    1. PythonSQLAlchemy-MySQLサーバーがなくなりました

    2. エラー:テーブル'<table-name>'のユーザー'<userid>'@'<ip-address>'に対してコマンドが拒否されました

    3. MySQLをDebian7にインストールする方法

    4. MySQLクイックヒント:LENGTHおよびTRIM関数の使用