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

Masalah dengan Select Mysql Condition Group By Order

Jika Anda menambahkan

SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';

Kemudian Anda akan melihat mengapa RDBMS lain tidak mengizinkan sintaks ini:

  • 3 kolom tidak teragregasi di SELECT tetapi satu di GROUP BY
  • Kolom ORDER BY tidak ada di GROUP BY/SELECT dan tidak diagregasi

Jika Anda ingin GROUP BY daripada DISTINCT, maka Anda perlu GROUP BY semua kolom di SELECT

SELECT s.serviceid, s.servicenameit, s.servicenameen 
FROM services s, kpi k, checklist_has_kpi chk 
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61 
GROUP BY s.serviceid, s.servicenameit, s.servicenameen

Tapi kemudian Anda tidak memiliki chk.order untuk memesan, baik menggunakan GROUP BY atau DISTINCT

Jadi bagaimana dengan ini, mengabaikan duplikat sepenuhnya?

SELECT s.serviceid, s.servicenameit, s.servicenameen 
FROM services s, kpi k, checklist_has_kpi chk 
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61 
ORDER BY chk.order ASC

Atau ini untuk ORDER BY urutan paling awal per 3x services kolom

SELECT s.serviceid, s.servicenameit, s.servicenameen 
FROM services s, kpi k, checklist_has_kpi chk 
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61 
GROUP BY s.serviceid, s.servicenameit, s.servicenameen
ORDER BY MIN(chk.order)



  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 menghilangkan baris yang sudah dilihat pengguna dari memeriksa tabel yang terlihat

  2. Menghitung perbedaan nilai antara dua record di Eloquent

  3. Pernyataan sql SELECT saya GABUNG di tiga tabel

  4. Bagaimana cara mengubah acara di mysql yang sudah dibuat

  5. masalah dengan utf8 di java