Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Reihenfolge nach Primärschlüssel

MySQL zieht Daten im Allgemeinen in der Reihenfolge der Einfügung heraus, die nach Primärschlüssel wäre, aber abgesehen davon können Sie technisch dasselbe tun, wenn Sie den Namen der Primärschlüsselspalte herausziehen und ihn in eine Reihenfolge nach

bringen
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')
);

Für zusammengesetzte Schlüssel können Sie dies verwenden

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')
);

Berechtigung für den Zugriff auf das Informationsschema aus dem DOCS

EINRICHTUNG:

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

ABFRAGE:

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

AUSGABE:

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