主キーによるMySQLの順序

デボン

一部のSQLサーバーでは、などの一般的なステートメントを使用できますORDER BY PRIMARY KEYこれがMySQLで機能するとは思わないのですが、複数のテーブル間で自動選択を可能にするような回避策はありますか、それとも主キーを決定するためにルックアップクエリが必要ですか?

私が取り組んできた回避策にはSHOW COLUMNS FROM、クエリを実行する前にaを呼び出すことが含まれます。これを行うためのより効率的な方法はありますか?MySQLは、選択プロセス中にテーブルの主キーを判別できますか?

更新: Gordonが指摘したように、MySQLまたはSQLでこれを行う公式の方法は一般的にありません。SAPにはカスタム機能があります。ジョンが指摘しSHOW COLUMNS FROM tableinformation_schemaようにまたはで作業するなどの回避策があります

ジョン・ラデル

MySQLは通常、主キーによる挿入順序でデータを引き出しますが、主キーの列名を引き出して次の順序で並べれば、技術的には同じことができます。

SELECT whatever FROM table
ORDER BY
(   SELECT `COLUMN_NAME`
    FROM `information_schema`.`COLUMNS`
    WHERE (`TABLE_SCHEMA` = 'dbName')
      AND (`TABLE_NAME` = 'tableName')
      AND (`COLUMN_KEY` = 'PRI')
);

複合キーの場合、これを使用できます

SELECT whatever FROM table
ORDER BY
(   SELECT GROUP_CONCAT(`COLUMN_NAME` SEPARATOR ', ')
    FROM `information_schema`.`COLUMNS`
    WHERE (`TABLE_SCHEMA` = 'dbName')
      AND (`TABLE_NAME` = 'tableName')
      AND (`COLUMN_KEY` = 'PRI')
);

DOCSからの情報スキーマアクセスの許可

各MySQLユーザーにはこれらのテーブルにアクセスする権利がありますが、ユーザーが適切なアクセス権限を持っているオブジェクトに対応するテーブル内の行のみを表示できます。場合によっては(たとえば、INFORMATION_SCHEMA.ROUTINESテーブルのROUTINE_DEFINITION列)、権限が不十分なユーザーにはNULLが表示されます。これらの制限は、InnoDBテーブルには適用されません。PROCESS権限のみで表示できます。

同じ特権が、INFORMATION_SCHEMAから情報を選択し、SHOWステートメントを介して同じ情報を表示する場合に適用されます。いずれの場合も、オブジェクトに関する情報を表示するには、オブジェクトに対する何らかの特権が必要です。

セットアップ:

CREATE TABLE some_stuff (
    firstID INT,
    secondID INT,
    username varchar(55),
    PRIMARY KEY (firstID, secondID)
) ;

クエリ:

SELECT GROUP_CONCAT(`COLUMN_NAME` SEPARATOR ', ')
FROM `information_schema`.`COLUMNS`
WHERE (`TABLE_SCHEMA` = 'dbName')
  AND (`TABLE_NAME` = 'some_stuff')
  AND (`COLUMN_KEY` = 'PRI');

出力:

+--------------------------------------------+
| GROUP_CONCAT(`COLUMN_NAME` SEPARATOR ', ') |
+--------------------------------------------+
|              firstID, secondID             |
+--------------------------------------------+

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

PostgreSQLの主キーの位置による列の順序付け

分類Dev

主キーによるテーブルの順序から選択する方法

分類Dev

キー値の順序による順序付け

分類Dev

特定の順序で複数の値によるmysqlの順序

分類Dev

MySQLによる行の順序付け

分類Dev

MySQLの制限による順序

分類Dev

Daynameによるmysqlの順序

分類Dev

使用法によるmysqlの順序?

分類Dev

別のテーブルの合計によるMySQLの順序

分類Dev

配列キーの値によるPHPの順序

分類Dev

加重フィールドによるMySQLの順序

分類Dev

MySQLのブール値による順序tinyint

分類Dev

ORシーケンスによるMySQLの順序

分類Dev

説明による順序でのMysqlエラー

分類Dev

グループ化とmySqlの順序による出力

分類Dev

アルファベット順のグループによるmysqlの順序

分類Dev

MySQLとMariaDBの主キーのデフォルトの順序の違いは?

分類Dev

主キーIDのJSONB配列によって指定された順序で行を選択するにはどうすればよいですか?

分類Dev

シードを使用したランダムな順序での特定の列によるmysqlの順序

分類Dev

検索ワードによるmysqlクエリの順序のように

分類Dev

KafkaStreamsでのキーの再生成によるメッセージの順序

分類Dev

リーダーボード-個々の合計によるMySQLの順序

分類Dev

キーによるクエリと日付による順序

分類Dev

キーによる配列の順序付けの最良の方法

分類Dev

最後の5つのレコードMYSQLのIDによる順序

分類Dev

2番目のクラスタリングキーによるCassandraの順序

分類Dev

文字列のようなものによるMySQLの順序

分類Dev

MySQL クエリ、順序グループによる 2 つのテーブル

分類Dev

空の場合でも、フィールド行表示によるmysqlの順序

Related 関連記事

  1. 1

    PostgreSQLの主キーの位置による列の順序付け

  2. 2

    主キーによるテーブルの順序から選択する方法

  3. 3

    キー値の順序による順序付け

  4. 4

    特定の順序で複数の値によるmysqlの順序

  5. 5

    MySQLによる行の順序付け

  6. 6

    MySQLの制限による順序

  7. 7

    Daynameによるmysqlの順序

  8. 8

    使用法によるmysqlの順序?

  9. 9

    別のテーブルの合計によるMySQLの順序

  10. 10

    配列キーの値によるPHPの順序

  11. 11

    加重フィールドによるMySQLの順序

  12. 12

    MySQLのブール値による順序tinyint

  13. 13

    ORシーケンスによるMySQLの順序

  14. 14

    説明による順序でのMysqlエラー

  15. 15

    グループ化とmySqlの順序による出力

  16. 16

    アルファベット順のグループによるmysqlの順序

  17. 17

    MySQLとMariaDBの主キーのデフォルトの順序の違いは?

  18. 18

    主キーIDのJSONB配列によって指定された順序で行を選択するにはどうすればよいですか?

  19. 19

    シードを使用したランダムな順序での特定の列によるmysqlの順序

  20. 20

    検索ワードによるmysqlクエリの順序のように

  21. 21

    KafkaStreamsでのキーの再生成によるメッセージの順序

  22. 22

    リーダーボード-個々の合計によるMySQLの順序

  23. 23

    キーによるクエリと日付による順序

  24. 24

    キーによる配列の順序付けの最良の方法

  25. 25

    最後の5つのレコードMYSQLのIDによる順序

  26. 26

    2番目のクラスタリングキーによるCassandraの順序

  27. 27

    文字列のようなものによるMySQLの順序

  28. 28

    MySQL クエリ、順序グループによる 2 つのテーブル

  29. 29

    空の場合でも、フィールド行表示によるmysqlの順序

ホットタグ

アーカイブ