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

Làm cách nào để tôi có thể chỉ chọn kết quả phù hợp riêng biệt đầu tiên từ một trường trong MySQL?

DISTINCT không hoạt động theo cách đó, các giá trị phải khác biệt trên tất cả các cột được trả về.

Bạn luôn có thể sử dụng một hàm tổng hợp trên hash hàm và GROUP BY name sẽ trả về một hash giá trị cho mỗi name :

SELECT name, min(hash) hash
FROM my_table 
WHERE name LIKE '%An%' 
GROUP BY name;

Xem SQL Fiddle with Demo .

Lưu ý: bằng cách sử dụng hàm tổng hợp với GROUP BY sẽ đảm bảo rằng bạn sẽ luôn trả về giá trị mong đợi cho hash cột. Khi bạn không GROUP BY hoặc tổng hợp các mục trong SELECT danh sách, bạn có thể trả về kết quả không mong đợi. (xem Tiện ích mở rộng MySQL cho GROUP BY )

Từ MySQL Docs:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Công cụ lưu trữ cho bảng không hỗ trợ sửa chữa. InnoDB hay MyISAM?

  2. Lệnh không đồng bộ; bạn không thể chạy lệnh này bây giờ

  3. Trình cài đặt MySql 5.7 không phát hiện được VS 2013 có thể phân phối lại

  4. Làm cách nào để lưu trữ các giá trị NULL trong các trường datetime trong MySQL?

  5. mysql:Chúng ta có thể tạo trình kích hoạt trên bảng hệ thống không?