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

Grup MySQL Dengan Dan Lewati Pengelompokan Pada Nilai Null

Jika kita memiliki kolom unik (atau kumpulan kolom) dalam tabel, maka kita dapat menambahkan ekspresi lain ke GROUP BY .

Ekspresi perlu mengembalikan nilai unik untuk setiap baris saat collection_id adalah nol. Jika tidak, ia mengembalikan sebuah konstanta.

Dengan asumsi kita memiliki id yang unik kolom di tabel, maka kita bisa melakukan sesuatu seperti ini:

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

Ekspresi kedua dalam GROUP BY mengembalikan nilai konstan 0 ketika collection_id tidak nol. Tapi itu mengembalikan nilai unik untuk setiap baris ketika collection_id adalah nol.

Perhatikan bahwa id di sini hanyalah referensi ke kolom yang didefinisikan sebagai unik di dalam tabel. KUNCI UTAMA adalah kandidat yang baik. Jika kita tidak memiliki indeks unik pada satu kolom, maka kita dapat mengulangi jenis ekspresi yang sama untuk setiap kolom dalam batasan unik kita, atau untuk kumpulan ekspresi apa pun yang dijamin unik pada setiap baris.

... 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)

Atau, kita dapat menggunakan ekspresi yang menghasilkan nilai unik:

... 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. FOREIGN KEY mereferensikan kolom tabel yang sama. Tidak dapat memasukkan nilai

  2. Mysql Pilih beberapa baris acak dan ditambah satu baris tertentu

  3. Peringkat dengan jutaan entri

  4. MySQL Master Untuk Menguasai Replikasi

  5. Kemunduran dalam kencan tanpa akhir pekan