11

p0300MB テーブルのパーティションを作成し、このコマンドでパーティションから選択クエリを作成しようとしました

SELECT * FROM employees PARTITION (p0);

しかし、次のエラーが発生しています

ERROR 1064 (42000): You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near '(p0)' at line 1

特定のパーティションからデータを取得するために選択クエリを作成する方法は?

4

8 に答える 8

14

実際、MySQL 5.6 以降、サポートされている構文は次のとおりです。

SELECT * FROM table PARTITION (partitionName);
于 2015-06-06T02:52:13.650 に答える
13

MySql のバージョンによっては、キーワードはMySQL 5.6.2PARTITIONまで存在しません。MySQL 5.5 または 5.1 を使用することになりますが、5.6 は使用しません。を使用している場合は、以下のような回避策を実行できますMySQL 5.1

SELECT partition, count(ID)
FROM
(
    SELECT ID,
      case when condition then p1
           when condition then p2
      .....
      end as partition

    FROM
      table
) s1
GROUP BY partition

注:上記の解決策は、必要な出力を得るための単なる回避策です。

このクエリを試して、パーティションの合計行数をカウントすることもできます。

SELECT table_rows as 'count(*)' FROM information_schema.partitions WHERE table_schema = schema() and table_name ='employees' and partition_name = 'p0';

注:table_schema = schema()に変更する場合がありますtable_schema = 'yourschema'

于 2013-01-01T17:02:40.940 に答える
2

そうです、PARTITION の明示的な選択は 5.1.54 バージョンではサポートされていません。この投稿を見る

于 2013-01-01T17:02:10.300 に答える
1

現在のバージョンの MYSQL ではサポートされていません。

DBA でこの質問を確認してください。MYSQL dev articleもチェックしてください。

于 2013-01-01T17:09:00.947 に答える
-1

このページに出くわす可能性のある他の人に指摘する価値があると思います.300MBのテーブルにはパーティションは必要ありません.

300MB は、最新の (またはそれほど最新ではない) データベースのデータ量としては些細な量であるため、1 つのパーティション内の 1 つのデータベースの 1 つのテーブルにデータを残すと、すべてがうまく機能します。

于 2020-02-08T08:20:48.450 に答える