【发布时间】:2016-01-30 19:55:34
【问题描述】:
我正在从 MS SQL Server 迁移到 MariaDB 10.0。我有使用 RANK() PARTITION BY 的查询。我已经在我的桌子上创建了某种 RANK() 实现,但它不能正常工作。
原来的查询是:
RANK() OVER (PARTITION BY visits.id_partner ORDER BY visits.updated_at DESC) AS rank
我的 MariaDB/MySQL 实现:
SELECT
...,
(
CASE visits.id_partner
WHEN @currId THEN
@curRow := @curRow + 1
ELSE
@curRow := 1 AND @currId := visits.id_partner
END
) AS rank
FROM
records rec
JOIN visits ON visits.id = rec.id_visit,
(
SELECT
@curRank := 0,
@currId := NULL
) r
WHERE
...
ORDER BY visits.id_partner ASC, visits.updated_at DESC
我想通过 updated_at 字段选择按 id_partner 顺序排列的行。当 id_partner 与前一行相同时,RANK 应加 1。当与前不同时,应重置为 1。
但是我的查询根本不起作用。我在所有行上仍然排名第一。你能帮我找出错误吗?
感谢您的帮助!
【问题讨论】:
-
MS SQL Server标签怎么来的? (不要标记未涉及的产品...)
-
很抱歉,可能是误点击