sql >> データベース >  >> RDS >> Mysql

主キーによるMySQLの順序

    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

    セットアップ:

    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             |
    +--------------------------------------------+
    


    1. MySQLテーブルは存在しませんエラーですが、存在します

    2. OracleでのPLS-00323エラーの解決

    3. mysqlデータベースを照会するときのETIMEDOUTエラー

    4. ActiveRecord3デッドロックの再試行