1

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;

すべてエラー 1064 (42000): SQL 構文にエラーがあります。

MemSQL のバージョンは 5.5.8 です

もちろん正常にselect _id from test;動作しますか?

では、使用する正確な構文は何ですか? それとも、MemSQL には実際にそのようなものはありませんか?

4

1 に答える 1

3

表示されるバージョン文字列は mysql 互換バージョンであり、SELECT version();. MemSQL のバージョンを正しく確認するには、SHOW VARIABLES WHERE Variable_name = 'memsql_version';.

ウィンドウ関数は MemSQL 5 で新しく追加されたため、MemSQL 5 を実行していないと思われます。5 はまだベータ版 (2016 年 3 月 16 日現在) であるため、それは奇妙ではありません。ベータ版はこちらから入手できます。

あなたの質問への返信で、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)
于 2016-03-16T08:37:13.753 に答える