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

MySQL GROUP BY dengan preferensi

Anda dapat menggunakan fungsi agregat untuk mendapatkan catatan yang lebih 'relevan' untuk setiap email.
Saya rasa kueri ini akan memberi Anda hasil terbaik:

SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress

Ini akan mengembalikan baris terkaya untuk setiap alamat email tetapi semua data akan dikembalikan dalam satu string (dipisahkan koma) sehingga Anda harus menguraikannya entah bagaimana.
Jika kinerja tidak menjadi masalah dan Anda ingin mendapatkan hasil normal yang ditetapkan dalam bidang terpisah, Anda dapat melakukannya:

SELECT table.emailAddress, fullName, address1, address2 
FROM 
table JOIN 
    (SELECT emailAddress, 
       max(concat(fullName,address1,address2)) as bestRowInOneString
    FROM table
    GROUP BY emailAddress
    ) bestRowsSubQuery 
 ON 
   concat(table.fullname,table.address1,table.address2) = bestRowsSubQuery.bestRowInOneString
   AND table.emailAddress = bestRowsSubQuery.emailAddress


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung perbedaan waktu antara dua cap waktu di mysql

  2. Bagaimana cara mengubah posisi kolom tabel MySQL tanpa kehilangan data kolom?

  3. Spring Boot Kesalahan Inisialisasi Database MySQL dengan Prosedur Tersimpan

  4. kategori php, sub kategori pohon

  5. mysql cocok dengan ~ contoh