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

MySQL GROUP BY với tùy chọn

Bạn có thể sử dụng một hàm tổng hợp để nhận được bản ghi 'phù hợp' hơn cho mỗi email.
Tôi nghĩ rằng truy vấn này sẽ mang lại cho bạn kết quả tốt nhất:

SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress

Nó sẽ trả về hàng giàu nhất cho mỗi địa chỉ email nhưng tất cả dữ liệu sẽ được trả về trong một chuỗi (được phân tách bằng dấu phẩy), vì vậy bạn sẽ phải phân tích cú pháp nó bằng cách nào đó.
Nếu hiệu suất không có vấn đề gì và bạn muốn nhận được kết quả bình thường được đặt trong các trường riêng biệt thì bạn có thể chọn một:

SELECT table.emailAddress, fullName, address1, address2 
FROM 
table JOIN 
    (SELECT emailAddress, 
       max(concat(fullName,address1,address2)) as bestRowInOneString
    FROM table
    GROUP BY emailAddress
    ) bestRowsSubQuery 
 ON 
   concat(table.fullname,table.address1,table.address2) = bestRowsSubQuery.bestRowInOneString
   AND table.emailAddress = bestRowsSubQuery.emailAddress


  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ách sử dụng MySQL Rollup

  2. Làm cách nào để bật máy khách MySQL tự động kết nối lại với MySQLdb?

  3. Làm cách nào để bạn có được id hàng một cách an toàn và hiệu quả sau khi chèn với mysql bằng MySQLdb trong python?

  4. tạo cơ sở dữ liệu trong mysql từ java

  5. Datetime NOW PHP mysql (biến thể + PDO)