代码之家  ›  专栏  ›  技术社区  ›  Krishna Jonnalagadda

如何从两个不同的行中获取两个最大id?

  •  0
  • Krishna Jonnalagadda  · 技术社区  · 6 年前

    我有表customer表,我需要从具有相同请求id的两个不同审批者获取最大id

    enter image description here

    我怎样才能实现这个场景

    预期产出。

    id request_id approver_id
     2   1           2
     4   1           1
    

    谢谢你的时间

    2 回复  |  直到 6 年前
        1
  •  1
  •   Tim Biegeleisen    6 年前

    一种方法使用子查询的联接来限制您所需的最大行数:

    SELECT ca1.id, ca1.request_id, ca1.approver_id
    FROM customer_approved ca1
    INNER JOIN
    (
        SELECT approver_id, MAX(id) AS max_id
        FROM customer_approved
        GROUP BY approver_id
    ) ca2
        ON ca1.approver_id = ca2.approver_id AND
           ca1.id = ca2.max_id;
    

    screen capture of demo below

    Demo

    如果您使用的是MySQL 8+,那么您还可以使用 ROW_NUMBER 在这里:

    WITH cte AS (
        SELECT *, ROW_NUMBER() OVER (PARTITION BY approver_id ORDER BY id DESC) rn
        FROM customer_approved
    )
    
    SELECT id, request_id, approver_id
    FROM cte
    WHERE rn = 1;
    

    Demo

        2
  •  1
  •   mkRabbani    6 年前

    您可以对列应用GROUP BY request\u id&approver\u id,然后选择MAX(id)以获得预期的输出,如下所示-

    SELECT MAX(id),request_id ,approver_id
    FROM customer_approved
    GROUP BY request_id,approver_id