让 over 子句在 mysql 中工作的正确语法是什么?
我想查看每个用户发送的短信总数,而不用 group by 子句分组。
SELECT
username,
count(sentSmsId) OVER (userId)
FROM
sentSmsTable,
userTable
WHERE
userId = sentUserId;
让 over 子句在 mysql 中工作的正确语法是什么?
我想查看每个用户发送的短信总数,而不用 group by 子句分组。
SELECT
username,
count(sentSmsId) OVER (userId)
FROM
sentSmsTable,
userTable
WHERE
userId = sentUserId;
MySQL 8 有窗口函数!因此,您可以像这样在其中编写查询:
SELECT username,
count(sentSmsId) OVER (partition by userId)
FROM sentSmsTable
JOIN userTable ON userId = sentUserId;
据我所知,MySQL 中没有 OVER 子句,但这里有一个链接可以帮助您完成相同的结果:
http://explainextended.com/2009/03/10/analytic-functions-first_value-last_value-lead-lag/
希望这可以帮助。
MySQL 目前不支持窗口函数,因此over()
只会产生语法错误(或垃圾,如果它被接受的话)。
MySQL 在最新版本之前没有窗口函数:MySQL 8(2018 年 4 月发布)。MS SQL Server 也接受 OVER 子句。
语法是:
function(col1) OVER (PARTITION BY col2 ORDER BY col3)
查看https://mysqlserverteam.com/mysql-8-0-2-introducing-window-functions/了解更多示例。