【发布时间】:2020-08-01 08:17:21
【问题描述】:
我正在尝试在 mysql 5.7 中转换以下 sql
SELECT T.STOREID AS STOREID,
T.ARTID AS ARTID,
T.TOTAMOUNT,
MAX(T.HOUR) AS HOUR,
RANK() OVER (PARTITION BY T.STOREID, T.ARTID
ORDER BY T.STOREID, T.ARTID, T.HOUR DESC) AS RN
FROM T
ORDER BY T.STOREID,
T.ARTID
这在 oracle 中运行完美,但在 mysql 中确实有效,因为只有 mysql 8 及更高版本支持这一点。谁能帮我在 mysql 5.7 中获得相同的结果
【问题讨论】:
-
也许升级??
-
我认为 MySQL 5.7 中没有针对它的 SQL 解决方案。您需要以有序的方式检索行并在应用程序中对数据进行后处理以计算排名。这不仅仅是
ROW_NUMBER(),我认为相关答案并没有解决您的问题。
标签: mysql sql select subquery window-functions