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

Nhận sai giá trị cho các cột khác khi tôi chọn MAX (cập nhật_ngày)

Bạn cần mệnh đề GROUP BY hoặc một truy vấn phức tạp hơn.

SELECT field1, MAX(updated_date)
  FROM mytable
 GROUP BY field1

Đối với dữ liệu mẫu, điều này sẽ trả về 3 hàng.

Nhiều khả năng, bạn muốn:

SELECT t1.field1, t3.max_date
  FROM mytable AS t1
  JOIN (SELECT MAX(t2.updated_date) AS max_date
          FROM mytable AS t2
       ) AS t3
    ON t1.updated_date = t3.max_date;

Đối với dữ liệu mẫu, điều này sẽ trả về 1 hàng:

ta3   2012-03-11 11:05:56

Trong số các DBMS chính, chỉ MySQL cho phép bạn bỏ qua mệnh đề GROUP BY khi bạn có hỗn hợp các cột tổng hợp và cột không tổng hợp trong danh sách chọn. Tiêu chuẩn SQL yêu cầu mệnh đề GROUP BY và bạn phải liệt kê tất cả các cột không tổng hợp trong đó. Đôi khi, trong MySQL, việc bỏ qua mệnh đề GROUP BY sẽ tạo ra câu trả lời bạn muốn; thường xuyên, tuy nhiên, nó quản lý để đưa ra một câu trả lời bất ngờ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. varchar so với văn bản - MySQL

  2. Chèn wpdb đầu tiên vào bảng mới của mySql không hoạt động

  3. xóa các bản sao

  4. Lấy dữ liệu từ hai bảng để tạo lịch sự kiện

  5. Số lượng từ phù hợp với MySQL