我试图从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。
我试图从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。
3条答案
按热度按时间lnlaulya1#
从表面上看,如果我错了就纠正我。每当发生新的事务时,事务编号似乎是按每个c\u id顺序排列的。还有一个“i\u id”列,它看起来是一个不重复的自动递增列。为了便于计数,您的事务编号按顺序为1、2、3等,因此每个人都以1开头,而那些以1开头的人有第二个,可能还有第三个,甚至更多。。。
因此,如果这是准确的,并且您需要每个c\u id的最新值,那么您确实需要每个c\u id的最大“i\u id”,因为将存在多个值为2、3等的记录。。。
试试这个。
因此,从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公司
vxf3dgd42#
mysql max with group by子句
要查找每个组的最大值,可以在select语句中对GROUPBY子句使用max函数。
使用以下查询:
lyr7nygr3#
像这样想
您的查询:
假设您的子查询返回一个事务数20。对于多个c\U id,这20可以是相同的。
所以外部查询正在运行
并返回所有这些结果。