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

Cara mengelompokkan berdasarkan pesanan DESC

Jika Anda ingin id terakhir untuk setiap asker , maka Anda harus menggunakan fungsi agregat:

SELECT max(id) as id, 
   asker
FROM questions 
GROUP by asker 
ORDER by id DESC

Alasan mengapa Anda mendapatkan hasil yang tidak biasa adalah karena MySQL menggunakan ekstensi ke GROUP BY yang memungkinkan item dalam daftar pilih untuk tidak digabungkan dan tidak disertakan dalam klausa GROUP BY. Namun ini dapat menyebabkan hasil yang tidak terduga karena MySQL dapat memilih nilai yang dikembalikan. (Lihat Ekstensi MySQL ke GROUP BY )

Dari Dokumen MySQL:

Sekarang jika Anda memiliki kolom lain yang perlu Anda kembalikan dari tabel, tetapi tidak ingin menambahkannya ke GROUP BY karena hasil yang tidak konsisten yang bisa Anda dapatkan, maka Anda bisa menggunakan subquery untuk melakukannya. (Demo )

select 
  q.Id,
  q.asker,
  q.other -- add other columns here
from questions q
inner join
(
  -- get your values from the group by
  SELECT max(id) as id, 
    asker
  FROM questions 
  GROUP by asker 
) m
  on q.id = m.id
order by q.id desc


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java Class.forName, driver pemuatan koneksi JDBC

  2. PESAN OLEH ASC dengan Null di Bawah

  3. MySQLDumper:Alat Pencadangan Database MySQL Berbasis PHP dan Perl

  4. Hitung selisih waktu antara dua baris

  5. Pilih dari semua tabel