[英]Equivalent of keep dense_rank for mysql
我有这张桌子
create table sd_devices (
device_code varchar(128),
vin varchar(128),
created_at datetime,
loaded_at datetime
)
我想通过created_at desc, loaded_at desc
为每个device_code
选择第一个vin
顺序。
在oracle中,我会使用keep dense_rank
,但在这里使用MySQL我不知道该怎么做。
这应该这样做:
SELECT DISTINCT device_code,
vin
FROM (
SELECT sd_devices.*
FROM sd_devices
ORDER BY created_at DESC, loaded_at DESC ) AS a
GROUP BY device_code
在子查询中,您选择所有行并按正确的顺序对它们进行排序,然后在外部查询中使用DISTINCT
来删除任何重复行,它将使用它遇到的第一行。 因为我们已经按照正确的顺序放置它,它将抓住我们想要的一行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.