Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara menampilkan baris dalam paket tiga di MySQL

Jika Anda menjalankan MySQL 8.0, pertimbangkan:

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

Demo di 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       |

Di versi sebelumnya, Anda dapat menggunakan variabel untuk meniru 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;

Demo di 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. Terhubung pada database MySQL jarak jauh melalui Python

  2. Perbedaan antara Kunci, Kunci Utama, Kunci Unik dan Indeks di MySQL

  3. Bagaimana cara memperbarui tabel secara otomatis saat tabel lain diperbarui di server mysql yang berbeda?

  4. Bagaimana cara menentukan apakah saya memiliki penulisan yang tidak dikomit dalam transaksi MySQL?

  5. sisipan mysqli - tetapi hanya jika bukan duplikat