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')
);
每个MySQL用户都有权访问这些表,但是
只能看到表中与对象对应的行
用户具有适当的访问权限。在某些情况下(for
例如,中的ROUTINE_DEFINITION列
INFORMATION_SCHEMA.ROUTINES表),用户不足
权限见NULL。这些限制不适用于InnoDB
表;只有PROCESS权限才能看到它们。
相同的权限适用于从中选择信息
INFORMATION_SCHEMA并通过SHOW查看相同的信息
声明。在任何一种情况下,您都必须拥有某个对象的特权
查看有关它的信息。
SETUP:
CREATE TABLE some_stuff (
firstID INT,
secondID INT,
username varchar(55),
PRIMARY KEY (firstID, secondID)
) ;
QUERY:
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 |
+--------------------------------------------+