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

MySQL групиране по и пропускане на групиране на нулеви стойности

Ако имаме уникална колона (или набор от колони) в таблицата, тогава можем да добавим друг израз към GROUP BY .

Изразът трябва да върне уникална стойност за всеки ред, когато collection_id е нула. В противен случай връща константа.

Ако приемем, че имаме уникален id колона в таблицата, тогава можем да направим нещо подобно:

... GROUP BY collection_id, IF(collection_id IS NULL, id, 0)

Този втори израз в GROUP BY връща константна стойност 0 когато collection_id не е нула. Но връща уникална стойност за всеки ред, когато collection_id е нулев.

Обърнете внимание, че id тук е само препратка към колона, която е дефинирана като уникална в таблицата. ПЪРВИЧНИЯТ КЛЮЧ е добър кандидат. Ако нямаме уникален индекс за една колона, тогава можем да повторим същия тип израз за всяка колона в нашето уникално ограничение или за всеки набор от изрази, който гарантирано е уникален за всеки ред.

... GROUP BY collection_id
           , IF(collection_id IS NULL, col1, '')
           , IF(collection_id IS NULL, col2, NULL)
           , IF(collection_id IS NULL, col3, collection_id)

Като алтернатива можем да използваме израз, генериращ уникална стойност:

... GROUP BY IFNULL(collection_id,UUID())


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php7.4 mysqli изтече

  2. Проблем със заявката на MySQL FULLTEXT

  3. Случаят на Mysql не работи

  4. Изключение за Grails и MySQL връзка

  5. MySQL, актуализирайте множество таблици с една заявка