公司做共享充电,有一个业务是查询设备的充电频次,查询SQL如下。
SELECT b.title,
a.device_id,
a.user_id,
COUNT(c.device_id) AS times,
b.address,
a.remark
FROM(
SELECT device_id, user_id, remark, address_id
FROM device_manage
WHERE user_id =100020) a
INNER JOIN device_address b ON a.address_id= b.id and b.title like '%澜庭大酒店%'
LEFT JOIN charge_bill c ON a.device_id= c.device_id
and pay_time>= '2017-12-27'
and pay_time<'2018-01-26'
GROUP BY a.device_id
ORDER BY times DESC limit 12,10
以上是原SQL
问题来了,当times相同的时候,数据就会开始重复,如上limit 12,10和limit 13,10数据有很多是重复的,网上查了下,order by再加一个字段依然无法解决问题,曾经order by times,c.id,order by times,a.device_id,order by times,c.device_id,
有大佬们知道怎么解决吗?
是你对limit没有理解?!
limit后面两个数字,
offset
和count
, 意思分别的偏移
和数量
limit 12,10 和limit 13,10 得有九条重复的吧?