Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zdobyć wszystkie rekordy bez usuwania w grupie w mysql

Jeśli używasz MySQL 8+, poradzimy sobie z tym za pomocą 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;

Pamiętaj jednak, że generalnie pożądane jest przechowywanie daty i czasu w jednym datetime pole z MySQL. W tym konkretnym przypadku zadziałało to dobrze, ale nie zawsze tak jest.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalujesz PostGresQL i MySQL w Mac OS X z systemem MAMP?

  2. MYSQL last_insert_id() i współbieżność

  3. Jak wyświetlić status i zmienne systemowe w MySQL Workbench za pomocą GUI?

  4. PHP/HTML Dodaj przycisk usuwania

  5. Uzyskaj wyniki, które mieszczą się w promieniach znaczników z bazy danych