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

Pilih baris dan baris di sekitarnya

Hanya satu ORDER BY klausa dapat didefinisikan untuk UNION akan bertanya. Tidak masalah jika Anda menggunakan UNION atau UNION ALL . MySQL mendukung LIMIT klausa pada bagian dari UNION 'd query, tapi relatif tidak berguna tanpa kemampuan untuk menentukan urutan.

MySQL juga tidak memiliki fungsi peringkat, yang Anda perlukan untuk mengatasi kesenjangan dalam data (hilang karena entri dihapus). Satu-satunya alternatif adalah dengan menggunakan variabel incrementing dalam pernyataan SELECT:

SELECT t.id, 
       @rownum := @rownum+1 as rownum 
  FROM MEDIA t, (SELECT @rownum := 0) r

Sekarang kita bisa mendapatkan daftar baris yang diberi nomor urut, jadi kita bisa menggunakan:

WHERE rownum BETWEEN @midpoint - ROUND(@midpoint/2) 
                 AND @midpoint - ROUND(@midpoint/2) [email protected]

Menggunakan 7 sebagai nilai untuk @midpoint, @midpoint - ROUND(@midpoint/2) mengembalikan nilai 4 . Untuk mendapatkan total 10 baris, setel nilai @upperlimit ke 10. Berikut kueri lengkapnya:

SELECT x.* 
  FROM (SELECT t.id, 
               @rownum := @rownum+1 as rownum 
          FROM MEDIA t, 
               (SELECT @rownum := 0) r) x
 WHERE x.rownum BETWEEN @midpoint - ROUND(@midpoint/2) AND @midpoint - ROUND(@midpoint/2) + @upperlimit

Tetapi jika Anda masih ingin menggunakan LIMIT , Anda dapat menggunakan:

  SELECT x.* 
    FROM (SELECT t.id, 
                 @rownum := @rownum+1 as rownum 
            FROM MEDIA t, 
                 (SELECT @rownum := 0) r) x
   WHERE x.rownum >= @midpoint - ROUND(@midpoint/2)
ORDER BY x.id ASC
   LIMIT 10


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP - Menggunakan PDO dengan array klausa IN

  2. Maven - java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

  3. Bagaimana cara menambahkan susun ke kueri laravel

  4. Menghapus jutaan baris di MySQL

  5. Masalah MySQL dengan WHERE dalam klausa