MySql使用over子句的正确语法

Nig*_*olf 12 mysql sql window-functions

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

我希望看到每个用户发送的总短信数,而不用group by子句对其进行分组.

SELECT 
    username, 
    count(sentSmsId) OVER (userId) 
FROM 
    sentSmsTable,
    userTable
WHERE
    userId = sentUserId;
Run Code Online (Sandbox Code Playgroud)

小智 13

我知道MySQL中没有OVER子句,但是这里有一个链接可以帮助你完成相同的结果:

http://explainextended.com/2009/03/10/analytic-functions-first_value-last_value-lead-lag/

希望这可以帮助.

  • MySQL 8不再适用:https://dev.mysql.com/doc/refman/8.0/en/window-functions.html (6认同)

Rad*_*ača 13

MySQL 8有窗口功能!因此,您可以像这样编写查询:

SELECT username, 
       count(sentSmsId) OVER (partition by userId) 
FROM sentSmsTable
JOIN userTable ON userId = sentUserId;     
Run Code Online (Sandbox Code Playgroud)


Den*_*rdy 5

MySQL当前不支持窗口函数,因此over()只会产生语法错误(或垃圾,如果它被接受,无论如何).