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

Как да показвате редове в пакети от три в MySQL

Ако използвате MySQL 8.0, помислете за:

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

Демо на DB Fiddle :

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

В по-стари версии можете да използвате променливи за емулиране на ROW_NUMBER() :

SELECT id, type, timestampFROM ( 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) xORDER BY FLOOR((rn - 1)/3), type, timestamp; 

Демо на 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. Вижте дефиницията на съхранена процедура/функция в MySQL

  2. MySQL заявка с ограничение и голямо изместване отнема завинаги

  3. Как да получите записи от последните 24 часа в MySQL

  4. PHP и MySQL парола за сравнение

  5. избиране на конкретно число като стойност на колона в заявката