mysql union all多表order by和group by一起使用(先排序后分组)

分组之前

SELECT *
FROM (
	SELECT user_id, CREATE_TIME, shop_id
	FROM large_fore_credit_apply_record
	WHERE shop_id = '2000043'
	UNION ALL
	SELECT user_id, CREATE_TIME, shop_id
	FROM large_apply_credit_record
	WHERE shop_id = '2000043'
	UNION ALL
	SELECT user_id, CREATE_TIME, shop_id
	FROM large_loan_record
	WHERE shop_id = '2000043'
) temp1
ORDER BY temp1.user_id, temp1.CREATE_TIME DESC;

分组之后

-- order by和group by 一起使用
SELECT temp2.user_id, max(temp2.create_time)
FROM (
	SELECT *
	FROM (
		SELECT user_id, CREATE_TIME, shop_id
		FROM large_fore_credit_apply_record
		WHERE shop_id = '2000043'
		UNION ALL
		SELECT user_id, CREATE_TIME, shop_id
		FROM large_apply_credit_record
		WHERE shop_id = '2000043'
		UNION ALL
		SELECT user_id, CREATE_TIME, shop_id
		FROM large_loan_record
		WHERE shop_id = '2000043'
	) temp1
	ORDER BY temp1.CREATE_TIME DESC
) temp2
GROUP BY temp2.user_id;


-- 进行分组取最大的max(create_time)对应的user_id
SELECT temp1.user_id, max(temp1.create_time)
FROM (
	SELECT user_id, CREATE_TIME, shop_id
	FROM large_fore_credit_apply_record
	WHERE shop_id = '2000043'
	UNION ALL
	SELECT user_id, CREATE_TIME, shop_id
	FROM large_apply_credit_record
	WHERE shop_id = '2000043'
	UNION ALL
	SELECT user_id, CREATE_TIME, shop_id
	FROM large_loan_record
	WHERE shop_id = '2000043'
) temp1
GROUP BY temp1.user_id;

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值