在MariaDB中使用ROW_NUMBER()函数时出现问题
我希望在select表输出中有一个row number列,但是当我尝试使用row_number()函数时,MariaDB抛出一个语法错误。在web()上有几个引用,但到目前为止我还没有成功。以下是我的MariaDB表格的一部分:在MariaDB中使用ROW_NUMBER()函数时出现问题,mariadb,window-functions,Mariadb,Window Functions,我希望在select表输出中有一个row number列,但是当我尝试使用row_number()函数时,MariaDB抛出一个语法错误。在web()上有几个引用,但到目前为止我还没有成功。以下是我的MariaDB表格的一部分: +---------------------+------------+ | date_reading | temp_patio | |---------------------+------------+ | 2019-09-03 06:26:0
+---------------------+------------+
| 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 |
文档中说“OVER()”选项是可选的,但是我已经尝试了有和没有OVER()子句以及有和没有ORDER BY子句
这是我的select命令:
从MyData中选择()上方的行作为箭头,*
日期读取>现在()-间隔3小时
或者,我尝试过不使用OVER()
子句,也可以使用OVER(orderbyid)
我的版本是
服务器版本: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;
对于较低版本:
我们可以用计算机来做这项工作
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;
仅在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;
对于较低版本:
我们可以用计算机来做这项工作
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;
根据MariaDB关于
行号
的官方文件,它是。因此,您的版本可能甚至不支持行号
。您的maria db versionOK是什么,看起来我需要更新。这是令人惊讶的,因为大约一周前,我才通过正常的“sudo-apt-get-install-mariadb服务器”在这个Raspberry Pi上安装了它。他们的图书馆可能落后了?将10.2添加到此Pi的正确过程是什么?而且,使用“新”版本是否存在问题?根据MariaDB关于行号
的官方文档,它是。因此,您的版本可能甚至不支持行号
。您的maria db versionOK是什么,看起来我需要更新。这是令人惊讶的,因为大约一周前,我才通过正常的“sudo-apt-get-install-mariadb服务器”在这个Raspberry Pi上安装了它。他们的图书馆可能落后了?将10.2添加到此Pi的正确过程是什么?还有,使用“新”版本有问题吗?谢谢,在我得到升级版本之前,这与charmNote类似。如果您按两列排序,则此技巧在@row_num
中可能不起作用。如何使其在我的表中创建列,使其在我的数据库表中而不是输出?为此输出选择PK和row_编号,并再次使用PK(primarykey)连接同一个表,然后使用update语句谢谢,在我获得升级版本之前,这就像一个charmNote。如果您按两列排序,则此技巧在@row_num
中可能不起作用。我如何使其在我的表中创建列,使其在我的数据库表中而不是输出中?为此输出选择PK和row_编号,并再次使用PK(primarykey)连接同一个表并使用update语句