RDK*_*RDK 1 mariadb window-functions
我想在选择表输出中有一个行号列,但是当我尝试使用 ROW_NUMBER() 函数时,MariaDB 会引发语法错误。网上有几个参考资料(http://www.mysqltutorial.org/mysql-window-functions/mysql-row_number-function/)但到目前为止我还没有成功。这是我的 MariaDB 表的一部分:
+---------------------+------------+
| date_reading | temp_patio |
|---------------------+------------+
| 2019-09-03 06:26:00 | 17.6 |
| 2019-09-03 06:33:00 | 17.5 |
| 2019-09-03 06:40:00 | 17.5 |
| 2019-09-03 06:46:00 | 17.5 |
| 2019-09-03 06:53:00 | 17.4 |
| 2019-09-03 07:00:00 | 17.4 |
| 2019-09-03 07:07:00 | 17.4 |
| 2019-09-03 07:13:00 | 17.4 |
Run Code Online (Sandbox Code Playgroud)
文档说“ OVER()”选项的选项是可选的,但我已经尝试过有和没有OVER()子句以及有和没有ORDER BY子句。
这是我的选择命令:
select ROW_NUMBER() OVER ( ) as Therow, * from MyData where Date_Reading > Now()- INTERVAL 3 HOUR;
(可选)我尝试不使用该OVER ()子句并使用OVER ( ORDER BY ID).
我的 MariaDB 版本是
服务器版本:10.1.38-MariaDB-0+deb9u1 Raspbian 9.0
有人可以帮忙吗?...RDK
仅 MariaDB 10.2 或更高版本支持窗口函数。
MariaDB 10.2 或更高版本:
SELECT
MyData.*,
ROW_NUMBER() OVER ( ORDER BY ID ) as Therow
FROM MyData
WHERE Date_Reading > Now()- INTERVAL 3 HOUR;
Run Code Online (Sandbox Code Playgroud)
对于较低版本:
我们可以使用MySQL 变量来完成这项工作。
SELECT
MyData.*,
@row_num:= @row_num + 1 AS Therow
FROM
MyData,
(SELECT @row_num:= 0 AS num) AS c
WHERE Date_Reading > Now()- INTERVAL 3 HOUR
ORDER BY test.`date` ASC;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5698 次 |
| 最近记录: |