memsql 真的支持排序函数吗?
Does memsql really support Ranking Functions?
http://docs.memsql.com/5.0/concepts/window_functions/
我检查了上面链接的文档并提出了几个可能的 SQL 函数,但没有一个是运气好。这些只是其中的一部分:
select row_number() from test;
select row_number() over (order by _id) from test;
select row_number() over {order by _id} from test;
select row_number() over order by _id from test;
select row_number() over (order by _id) as row_num from test;
select row_number over order by _id as row_num from test;
全部给我 ERROR 1064 (42000): 你的 SQL 语法有错误;
内存SQL版本为5.5.8
当然 select _id from test;
工作正常吗?
那么要使用的确切语法是什么?还是MemSQL中实际上没有这样的东西?
您看到的版本字符串是 mysql 兼容版本,我假设您是通过 SELECT version();
获得的。要正确检查您的 MemSQL 版本,请使用 SHOW VARIABLES WHERE Variable_name = 'memsql_version';
.
Window 函数是 MemSQL 5 中的新功能,让我相信你不是 运行 MemSQL 5。这并不奇怪,因为 5 仍处于测试阶段(截至 2016 年) -03-16).您可以获得内测 here.
在他对您的问题的答复中,dnoeth 正确地指出查询 #2 和 #5 是有效的。为了尽职调查,我对我本地构建的 MemSQL 进行了 运行 这些查询,并且它们都有效。
memsql> create table test(_id int);
Query OK, 0 rows affected (0.01 sec)
memsql> insert into test values (1), (2), (3);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
memsql> select row_number() over (order by _id) from test;
+----------------------------------+
| row_number() over (order by _id) |
+----------------------------------+
| 1 |
| 2 |
| 3 |
+----------------------------------+
3 rows in set (0.00 sec)
memsql> select row_number() over (order by _id) as row_num from test;
+---------+
| row_num |
+---------+
| 1 |
| 2 |
| 3 |
+---------+
3 rows in set (0.01 sec)
memsql> SHOW VARIABLES WHERE Variable_name = 'memsql_version';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| memsql_version | 5.0 |
+----------------+-------+
1 row in set (0.00 sec)
http://docs.memsql.com/5.0/concepts/window_functions/
我检查了上面链接的文档并提出了几个可能的 SQL 函数,但没有一个是运气好。这些只是其中的一部分:
select row_number() from test;
select row_number() over (order by _id) from test;
select row_number() over {order by _id} from test;
select row_number() over order by _id from test;
select row_number() over (order by _id) as row_num from test;
select row_number over order by _id as row_num from test;
全部给我 ERROR 1064 (42000): 你的 SQL 语法有错误;
内存SQL版本为5.5.8
当然 select _id from test;
工作正常吗?
那么要使用的确切语法是什么?还是MemSQL中实际上没有这样的东西?
您看到的版本字符串是 mysql 兼容版本,我假设您是通过 SELECT version();
获得的。要正确检查您的 MemSQL 版本,请使用 SHOW VARIABLES WHERE Variable_name = 'memsql_version';
.
Window 函数是 MemSQL 5 中的新功能,让我相信你不是 运行 MemSQL 5。这并不奇怪,因为 5 仍处于测试阶段(截至 2016 年) -03-16).您可以获得内测 here.
在他对您的问题的答复中,dnoeth 正确地指出查询 #2 和 #5 是有效的。为了尽职调查,我对我本地构建的 MemSQL 进行了 运行 这些查询,并且它们都有效。
memsql> create table test(_id int);
Query OK, 0 rows affected (0.01 sec)
memsql> insert into test values (1), (2), (3);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
memsql> select row_number() over (order by _id) from test;
+----------------------------------+
| row_number() over (order by _id) |
+----------------------------------+
| 1 |
| 2 |
| 3 |
+----------------------------------+
3 rows in set (0.00 sec)
memsql> select row_number() over (order by _id) as row_num from test;
+---------+
| row_num |
+---------+
| 1 |
| 2 |
| 3 |
+---------+
3 rows in set (0.01 sec)
memsql> SHOW VARIABLES WHERE Variable_name = 'memsql_version';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| memsql_version | 5.0 |
+----------------+-------+
1 row in set (0.00 sec)