Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL обединява две таблици с максимална стойност в друго поле

Трябва да използвате две подзаявки като тази:

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;

Изход:

CID ИМЕ МОБИЛЕН ДАТА БАЛАНС
1 ABC 12345 20 септември 2013 г. 00:00:00+0000 300
2 XYZ 98475 21 септември 2013 г. 00:00:00+0000 600

Вижте този SQLFiddle

Редактиране

Както беше обсъдено в коментарите, тази заявка може да бъде написана само с една подзаявка:

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

Вижте коригирания SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Повтарящо се ниво на изолация на четене SELECT срещу UPDATE...WHERE

  2. if условие в mysql select оператор

  3. Как да получа структурата на MySQL таблицата в PHP? Плюс списък на всички таблици?

  4. Превключване на PostgreSQL база данни или схема в DataGrip JetBrains

  5. Хостът не позволява събития в MySQL, коя е най-добрата алтернатива