Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách nhóm theo thứ tự DESC

Nếu bạn muốn id cuối cùng cho mỗi asker , thì bạn nên sử dụng một hàm tổng hợp:

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

Lý do tại sao bạn nhận được kết quả bất thường là do MySQL sử dụng một phần mở rộng cho GROUP BY điều này cho phép các mục trong danh sách chọn không được tổng hợp và không được đưa vào mệnh đề GROUP BY. Tuy nhiên, điều này có thể dẫn đến kết quả không mong muốn vì MySQL có thể chọn các giá trị được trả về. (Xem Tiện ích mở rộng MySQL cho GROUP BY )

Từ MySQL Docs:

Bây giờ, nếu bạn có các cột khác mà bạn cần trả lại từ bảng, nhưng không muốn thêm chúng vào GROUP BY do kết quả không nhất quán mà bạn có thể nhận được, khi đó bạn có thể sử dụng một truy vấn con để làm như vậy. ( Bản trình diễn )

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.sql.SQLException:Trước khi bắt đầu tập kết quả

  2. Cách đặt mật khẩu gốc thành null

  3. Trong MySQL, tôi có thể sao chép một hàng để chèn vào cùng một bảng không?

  4. Nhận phản hồi HTML thay vì JSON trong android

  5. Làm thế nào để sử dụng nhiều cơ sở dữ liệu cho một ứng dụng rails 3.1 trong Heroku?