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

Memilih blok catatan yang berdekatan di mysql

Ada trik sederhana untuk menciutkan entri berturut-turut ke dalam satu grup. Jika Anda mengelompokkan menurut (nomor_baris - entri), entri yang berurutan akan berakhir di grup yang sama. Berikut adalah contoh yang menunjukkan apa yang saya maksud:

Kueri :

SELECT phonenum, @curRow := @curRow + 1 AS row_number, phonenum - @curRow
from phonenums p
join (SELECT @curRow := 0) r

Hasil :

|    PHONENUM | ROW_NUMBER | PHONENUM - @CURROW |
-------------------------------------------------
| 27100070000 |          1 |        27100069999 |
| 27100070001 |          2 |        27100069999 |
| 27100070002 |          3 |        27100069999 |
| 27100070003 |          4 |        27100069999 |
| 27100070004 |          5 |        27100069999 |
| 27100070005 |          6 |        27100069999 |
| 27100070008 |          7 |        27100070001 |
| 27100070009 |          8 |        27100070001 |
| 27100070012 |          9 |        27100070003 |
| 27100070015 |         10 |        27100070005 |
| 27100070016 |         11 |        27100070005 |
| 27100070040 |         12 |        27100070028 |

Perhatikan bagaimana entri yang berurutan semuanya memiliki nilai yang sama untuk PHONENUM - @CURROW . Jika kita mengelompokkan pada kolom itu, dan memilih min &max setiap grup, Anda memiliki ringkasan (dengan satu pengecualian:Anda dapat mengganti nilai END dengan NULL jika MULAI =AKHIR jika itu persyaratan):

Kueri :

select min(phonenum), max(phonenum) from
(
  SELECT phonenum, @curRow := @curRow + 1 AS row_number
  from phonenums p
  join (SELECT @curRow := 0) r
) p
group by phonenum - row_number

Hasil :

| MIN(PHONENUM) | MAX(PHONENUM) |
---------------------------------
|   27100070000 |   27100070005 |
|   27100070008 |   27100070009 |
|   27100070012 |   27100070012 |
|   27100070015 |   27100070016 |
|   27100070040 |   27100070040 |

Demo:http://www.sqlfiddle.com/#!2/59b04/5




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan fatal:Menggunakan $this saat tidak dalam konteks objek di

  2. Menggabungkan beberapa baris menjadi satu baris dan beberapa kolom di mysql

  3. bagaimana cara menyimpan tipe tanggal Java ke tipe tanggal mysql?

  4. Contoh Injeksi PHP/MySQL

  5. Bagaimana cara mengetahui kapan kueri berhasil dieksekusi di PHP PDO?