Mysql
 sql >> база данни >  >> RDS >> Mysql

Избиране на непрекъснат блок от записи в mysql

Има прост трик за свиване на последователни записи в една група. Ако групирате по (номер_ред - запис), записи, които са последователни, ще се окажат в същата група. Ето пример, демонстриращ какво имам предвид:

Запитване :

ИЗБЕРЕТЕ телефонен номер, @curRow :=@curRow + 1 AS номер_ред, телефонен номер - @curRowот телефонни номера pjoin (SELECT @curRow :=0) r 

Резултати :

<предварителен код>| 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 |

Забележете как всички последователни записи имат една и съща стойност за PHONENUM - @CURROW . Ако групираме в тази колона и изберем min &max на всяка група, имате обобщението (с едно изключение:можете да замените стойността END с NULL ако START =END, ако това е изискване):

Запитване :

изберете min(phonenum), max(phonenum) от( SELECT phonenum, @curRow :=@curRow + 1 AS row_number от телефонни номера p join (SELECT @curRow :=0) r) pgroup by phonenum - row_number  

Резултати :

<предварителен код>| MIN(PHONENUM) | MAX(PHONENUM) |--------------------------------| 27100070000 | 27100070005 || 27100070008 | 27100070009 || 27100070012 | 27100070012 || 27100070015 | 27100070016 || 27100070040 | 27100070040 |

Демо: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. MYSQL Съкратена неправилна DOUBLE стойност

  2. SEC_TO_TIME() Примери – MySQL

  3. MySQLi проверява ли сървърните сертификати по подразбиране, когато използва SSL?

  4. Как да управлявате голям набор от данни с помощта на Spring MySQL и RowCallbackHandler

  5. Грешка при вмъкване на MySQL:ER_BAD_FIELD_ERROR:Неизвестна колона „2525“ в „списък с полета“