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

MySQL nối hai bảng với giá trị lớn nhất trên một trường khác

Bạn cần sử dụng hai truy vấn phụ như sau:

SELECT a.cid, a.name, a.mobile, b.date, b.balance
FROM account a 
JOIN
(
    SELECT b1.* FROM balance b1
    JOIN
    (
      SELECT cid, MAX(Date) As maxDate
      FROM balance
      GROUP BY cid
    ) b2
    ON b1.cid = b2.cid
    AND b1.date = b2.maxDate
) b
ON a.cid = b.cid;

Đầu ra:

CID TÊN DI ĐỘNG DATE CÂN BẰNG
1 ABC 12345 ngày 20 tháng 9 năm 2013 00:00:00 + 0000 300
2 XYZ 98475 , ngày 21 tháng 9 năm 2013 00:00:00 + 0000 600

Xem SQLFiddle này

Chỉnh sửa

Như đã thảo luận trong phần nhận xét, truy vấn này cũng có thể được viết chỉ với một truy vấn con:

SELECT a.cid, a.name, a.mobile, b1.date, b1.balance 
FROM account a 
JOIN balance b1 ON a.cid = b1.cid     
JOIN (
    SELECT cid, MAX(Date) As maxDate 
    FROM balance 
    GROUP BY cid
) b2 
ON b1.cid = b2.cid 
AND b1.date = b2.maxDate

Xem SQLFiddle được điều chỉnh



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thứ tự MySQL theo trường trong Eloquent

  2. Rails:hiển thị hình ảnh từ trường đốm màu trong cơ sở dữ liệu

  3. Triển khai thẻ xu hướng dựa trên Mysql json

  4. Truyền giá trị từ danh sách thả xuống hoặc trường văn bản trong Wordpress sang truy vấn MySQL trong functions.php

  5. Có cách nào để điền vào bảng MySQL 5.7 với dữ liệu từ tệp json với dấu ngắt dòng trên Win7 không?