Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách lấy tất cả bản ghi mà không cần xóa trong Nhóm trong mysql

Nếu bạn đang sử dụng MySQL 8+, chúng tôi có thể xử lý vấn đề này bằng cách sử dụng 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;

Nhưng lưu ý rằng nói chung, bạn nên lưu trữ ngày và giờ trong một datetime duy nhất với MySQL. Trong trường hợp cụ thể này, nó hoạt động tốt, nhưng điều này có thể không phải lúc nào cũng đúng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Chọn dữ liệu từ nhiều bảng có cùng cấu trúc nhưng dữ liệu khác nhau

  2. Lỗi MySQL:2013, Mất kết nối với máy chủ MySQL lúc 'đang đọc gói giao tiếp ban đầu', lỗi hệ thống:0

  3. Cách chuyển một chuỗi dưới dạng mệnh đề WHERE trong MYSQL

  4. Thay thế cho rất nhiều boolean trong MySQL?

  5. MySQL chuyển đổi kiểu dữ liệu cột từ VARCHAR sang INT