mysql增量查询_mysql – 基于GROUP BY添加增量字段的查询

这篇博客介绍了如何在MySQL中对数据进行增量查询,特别是在`GROUP BY`语句中添加行号或顺序字段。内容包括两种解决方案,分别处理有序和无序数据,以及存在空`Order`值的情况。通过复杂的查询逻辑,确保了即使数据存在空隙或无序,也能正确地为每个用户_ID分配行号。
摘要由CSDN通过智能技术生成

一个)

您可以使用随每行递增的变量,并使用每个user_ID重置以获取行计数.

SELECT ID,User_ID,`Order`

FROM ( SELECT @r:= IF(@u = User_ID,@r + 1,1) AS `Order`,ID,@u:= User_ID

FROM Photos,(SELECT @r:= 1) AS r,(SELECT @u:= 0) AS u

ORDER BY User_ID,ID

) AS Photos

B)

我的第一个解决方案是将Order添加到添加行号的排序中,因此任何带有Order的东西首先按其顺序排序,但这只适用于您的订购系统没有间隙且从1开始的情况:

SELECT ID,RowNumber AS `Order`

FROM ( SELECT @r:= IF(@u = User_ID,1) AS `RowNumber`,(SELECT @i:= 1) AS r,`Order`,ID

) AS Photos

ORDER BY `User_ID`,`Order`

订购GAPS

我终于找到了一种维持排序顺序的方法,即使序列中存在间隙也是如此.

SELECT ID,`Order`

FROM Photos

WHERE `Order` IS NOT NULL

UNION ALL

SELECT Photos.ID,Photos.user_ID,Numbers.RowNum

FROM ( SELECT ID,@

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值