代码之家  ›  专栏  ›  技术社区  ›  Arvin Jason Cabrera

在具有相同id的sql中选择heighest数

  •  -1
  • Arvin Jason Cabrera  · 技术社区  · 7 年前

    我正在尝试从表tbl_loan中选择max transaction_num并按c_id分组,以避免重复c_id。

    这是我的问题

    SELECT * FROM `tbl_loan` WHERE transaction_num IN (SELECT max(transaction_num) max_trans FROM tbl_loan GROUP BY c_id)

    我的输出是 enter image description here

    仍然有重复的C\U ID。

    3 回复  |  直到 7 年前
        1
  •  1
  •   DRapp    7 年前

    从外表看,如果我错了就纠正我每当发生新的事务时,事务编号似乎是按每个C\U ID顺序排列的。还有一个“i_id”列似乎是一个自动递增的列,不重复。似乎您的交易号是按顺序1,2,3等每一个C\U ID为简单的计数目的,所以每个人都以1开始,而那些更多有第二,可能第三和更多…

    所以,如果这是准确的,并且你想要最新的每一个CYID,你真的想要最大的“IIID”每个CyID,因为多个记录将存在2, 3的值,等等。

    试试这个。

    SELECT 
          TL.* 
       FROM 
          tbl_loan TL 
             JOIN ( SELECT C_ID, max(I_ID) maxI_ID
                          FROM tbl_loan 
                          GROUP BY c_id) MaxPer
                on TL.I_ID = MaxPer.MaxI_ID
    

    所以,从C_ID=55的数据中,得到I_ID=61(trans num=1)和62(trans num=2)所以对于ID=55,需要事务I_ID=62,它表示第二个事务。

    对于c_id=70,它的i_id为77&78,其中i_id=78。

    其余的只有一个trans num,并且将得到他们唯一的一个条目id。

    高温高压

        2
  •  2
  •   Sumithran    7 年前

    带GROUP BY子句的MySQL MAX

    若要查找每个组的最大值,请使用SELECT语句中的GROUPBY子句使用MAX函数。

    使用以下查询:

    SELECT 
        *, MAX(transaction_num)
    FROM
        tbl_loan
    GROUP BY c_id
    ORDER BY MAX(transaction_num);
    
        3
  •  1
  •   Bleach    7 年前

    这样想吧

    您的询问:

    SELECT * FROM `tbl_loan` WHERE transaction_num IN (SELECT max(transaction_num) max_trans FROM tbl_loan GROUP BY c_id)
    

    假设子查询返回一个事务数20。对于多个C\U ID,此20可以相同。

    所以你的外部查询正在运行

    SELECT * FROM `tbl_loan` WHERE transaction_num IN (20) 
    

    并返回所有这些结果。