【问题标题】:How to left join selecting value with the highest user_id如何左加入选择具有最高 user_id 的值
【发布时间】:2015-05-03 08:26:08
【问题描述】:

这个问题和我之前的问题How to left join 2 tables with SUM() and MAX() grouped by date有关

我改变的是我添加了 user_id 列(自动递增)并希望选择每个日期具有最高 user_id 的值

我有表 loadhistory(想要“仅选择每个日期具有最高 user_id 的值”分组并按日期 DESC 排序。) 所以在这种情况下,我想为 2015-02-27 选择 150,因为它在该日期具有最高的 user_id,在 2015-02-28 中选择 50

| user_id | customer_id |     date    | bal |
    1           1         2015-02-27    100
    2           1         2015-02-27    150
    3           1         2015-02-28    150
    4           1         2015-02-28    50

和表事务记录(希望使用 SUM(bal) group by 和 order by date DESC 对每个日期的值求和)

 | user_id |customer_id |     date     | bal |
     1          1         2015-02-27     50
     2          1         2015-02-27     20
     3          1         2015-02-28     10

我想加入两个看起来像这样的表:

|    date    |   balance    |   amount paid   |
  2015-02-28       50               10
  2015-02-27       150              70

这是目前为止的代码(我使用了从上一个问题中得到的代码,并在我的新问题中对其进行了编辑,希望得到想要的结果,但没有)

SELECT a.customer_id, a.date, (b.bal AS bal WHERE b.user_id = MAX(b.user_id) , a.paid
FROM (
SELECT customer_id, date, SUM(bal) AS paid
FROM transactionrecord
GROUP BY customer_id, date
) AS a LEFT JOIN loadhistory AS b
ON a.customer_id = b.customer_id AND a.date = b.date
WHERE a.customer_id = 1
GROUP BY a.customer_id, a.date, a.paid
ORDER BY a.date DESC

请帮忙。提前致谢

【问题讨论】:

    标签: php mysql join


    【解决方案1】:

    MySQL 使用第一行 by group by,所以你必须先排序,然后才能像这样使用 group by:

    SELECT * FROM (SELECT * FROM `loadhistory` ORDER BY user_id DESC) history GROUP BY date
    

    因此您可以使用以下查询作为解决方案:

    SELECT h.date,h.bal as balance, t.amount as 'amount paid' FROM 
      (SELECT * FROM (SELECT * FROM `loadhistory` ORDER BY user_id DESC) history GROUP BY date) as h
    JOIN
      (SELECT SUM(bal) as amount, customer_id, date FROM `transactionrecord` GROUP BY date) as t
    ON h.date = t.date AND h.customer_id = t.customer_id
    ORDER BY date DESC
    

    【讨论】:

      猜你喜欢
      • 2015-05-14
      • 2015-01-14
      • 2017-01-02
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      相关资源
      最近更新 更多