MySql使用over子句的正确语法

MySql使用over子句的正确语法,mysql,sql,window-functions,Mysql,Sql,Window Functions,让over子句在mysql中工作的正确语法是什么 我希望看到每个用户发送的短信总数,而不使用GROUPBY子句进行分组 SELECT username, count(sentSmsId) OVER (userId) FROM sentSmsTable, userTable WHERE userId = sentUserId; MySQL目前不支持窗口函数,因此over()只会产生语法错误(或者垃圾,如果接受的话)。据我所知,MySQL中没有ove

让over子句在mysql中工作的正确语法是什么


我希望看到每个用户发送的短信总数,而不使用GROUPBY子句进行分组

SELECT 
    username, 
    count(sentSmsId) OVER (userId) 
FROM 
    sentSmsTable,
    userTable
WHERE
    userId = sentUserId;

MySQL目前不支持窗口函数,因此
over()
只会产生语法错误(或者垃圾,如果接受的话)。

据我所知,MySQL中没有over子句,但这里有一个链接可以帮助您实现相同的结果:

希望这能有所帮助。

MySQL 8已经获得了成功!因此,您可以这样在其中编写查询:

SELECT username, 
       count(sentSmsId) OVER (partition by userId) 
FROM sentSmsTable
JOIN userTable ON userId = sentUserId;     

MySQL在最新版本MySQL 8(2018年4月发布)之前没有窗口功能。MS SQL Server也接受OVER子句

语法是:

function(col1) OVER (PARTITION BY col2 ORDER BY col3)

查看更多示例。

通过此查询,您希望得到什么样的结果?我希望看到每个用户发送的短信总数,而不使用group by子句进行分组。对于MySQL 8来说,这不再适用: