选择同一id的sql中最黑的数

zf2sa74q  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(343)

我试图从tbl\u loan表中选择max transaction\u num,并按c\u id对其进行分组,以避免c\u id重复。
这是我的问题

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

我的输出是

仍然有重复的c\U id。

lnlaulya

lnlaulya1#

从表面上看,如果我错了就纠正我。每当发生新的事务时,事务编号似乎是按每个c\u id顺序排列的。还有一个“i\u id”列,它看起来是一个不重复的自动递增列。为了便于计数,您的事务编号按顺序为1、2、3等,因此每个人都以1开头,而那些以1开头的人有第二个,可能还有第三个,甚至更多。。。
因此,如果这是准确的,并且您需要每个c\u id的最新值,那么您确实需要每个c\u id的最大“i\u id”,因为将存在多个值为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\u id=62。
对于c\u id=70,它的i\u id为77&78,其中i\u id=78。
其余的只有一个trans num,将获得他们唯一的条目id。
hth公司

vxf3dgd4

vxf3dgd42#

mysql max with group by子句
要查找每个组的最大值,可以在select语句中对GROUPBY子句使用max函数。
使用以下查询:

SELECT 
    *, MAX(transaction_num)
FROM
    tbl_loan
GROUP BY c_id
ORDER BY MAX(transaction_num);
lyr7nygr

lyr7nygr3#

像这样想
您的查询:

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)

并返回所有这些结果。

相关问题