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

Cách hiển thị các hàng trong gói ba trong MySQL

Nếu bạn đang chạy MySQL 8.0, hãy xem xét:

SELECT *
FROM mytable
ORDER BY 
    FLOOR((ROW_NUMBER() OVER(PARTITION BY type ORDER BY timestamp) - 1)/3),
    type, 
    timestamp

Bản trình diễn trên DB Fiddle :

| id  | type | timestamp |
| --- | ---- | --------- |
| 1   | A    | 101       |
| 2   | A    | 102       |
| 5   | A    | 105       |
| 3   | B    | 103       |
| 4   | B    | 104       |
| 6   | B    | 106       |
| 7   | A    | 107       |
| 8   | A    | 108       |
| 10  | A    | 110       |
| 9   | B    | 109       |
| 11  | B    | 111       |
| 12  | B    | 112       |

Trong các phiên bản trước đó, bạn có thể sử dụng các biến để mô phỏng ROW_NUMBER() :

SELECT id, type, timestamp
FROM (
    SELECT 
        t.*, 
        @rn := CASE WHEN @type = type THEN @rn + 1 ELSE 1 END rn,
        @type := type
    FROM 
        mytable t
        CROSS JOIN (SELECT @type := NULL, @rn := 1) x
    ORDER BY type, timestamp
) x
ORDER BY 
    FLOOR((rn - 1)/3),
    type, 
    timestamp;

Bản trình diễn trên DB Fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhóm MySQL theo ID và Ngày giờ mới nhất

  2. JDBC / Connectorj:Hiểu tổng hợp kết nối

  3. Lỗi SQL của tôi:Cố gắng kết nối không thành công do bên được kết nối không phản hồi đúng

  4. Làm cách nào để nhận e-mail khi bảng MySQL của tôi được cập nhật?

  5. Làm cách nào để thêm mệnh đề where trong câu lệnh Chèn MySQL?