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

Truy vấn con MySQL - Chỉ tìm bản ghi đầu tiên trong THAM GIA TRÁI

Đây là greatest-n-per-group vấn đề được hỏi thường xuyên trên Stack Overflow.

Đây là cách tôi sẽ giải quyết nó trong trường hợp của bạn:

SELECT m.memberid, m.membername, m.gender, mp.phone, mh.loggedtime, mh.ipaddy
FROM tbl_members m 
INNER JOIN tbl_members_phones mp ON m.defaultphoneid = mp.phoneid
INNER JOIN tbl_members_addresses ma ON m.defaultaddressid = ma.addressid
LEFT OUTER JOIN tbl_members_login_history mh ON m.memberid = mh.memberid
LEFT OUTER JOIN tbl_members_login_history mh2 ON m.memberid = mh2.memberid
    AND mh.pk < mh2.pk
WHERE mh2.pk IS NULL;

Đó là, chúng tôi muốn mh là hàng gần đây nhất trong tbl_member_login_history cho memberid đã cho. Vì vậy, chúng tôi tìm kiếm một hàng khác mh2 điều đó thậm chí còn gần đây hơn. Nếu không gần đây hơn mh hàng được tìm thấy, sau đó là mh2.* sẽ là NULL, vì vậy mh phải là gần đây nhất.

Tôi giả sử bảng này có một cột khóa chính chứa các giá trị ngày càng tăng. Đối với ví dụ này, tôi giả sử tên cột là pk .

Sử dụng LEFT OUTER JOIN cho cả hai tham chiếu đến bảng lịch sử đăng nhập có nghĩa là m hàng sẽ được báo cáo ngay cả khi không có hàng phù hợp.



  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ảnh báo:mysqli_connect ():(HY000 / 1045):Quyền truy cập bị từ chối đối với người dùng 'tên người dùng' @ 'localhost' (sử dụng mật khẩu:CÓ)

  2. Cài đặt MYSQL với ứng dụng .NET winforms

  3. Chọn các kết quả khác biệt hàng đầu được sắp xếp theo tần suất

  4. Chọn một phần từ Trường Blob MySQL

  5. PHP &mySQL - ë được viết là Ã ​​«