Mysql 按顺序选择*字段

Mysql 按顺序选择*字段,mysql,sorting,field,Mysql,Sorting,Field,MySQL是否保证像 SELECT * from mytable 将以与相同的顺序输出其字段 DESCRIBE mytable 是吗 我们有一个规则,即所有表的第一列始终是主键,虽然在select*中依赖列顺序可能并不总是一个好主意,但确保提供的第一个字段是主键将非常有用 这是一个特定于MySQL的问题,因此不是下面给出的链接的副本。答案是否,MySQL不保证select*中的列的顺序与descripe tablename输出中的顺序相同。Mysql文档在这两种情况下都没有指定列的顺序。但是

MySQL是否保证像

SELECT * from mytable
将以与相同的顺序输出其字段

DESCRIBE mytable
是吗

我们有一个规则,即所有表的第一列始终是主键,虽然在
select*
中依赖列顺序可能并不总是一个好主意,但确保提供的第一个字段是主键将非常有用


这是一个特定于MySQL的问题,因此不是下面给出的链接的副本。

答案是否,MySQL不保证
select*
中的列的顺序与
descripe tablename
输出中的顺序相同。Mysql文档在这两种情况下都没有指定列的顺序。但是,这两个语句可能都会按顺序位置列出列,因此实际上输出应该匹配


但是,即使在这两种情况下字段的顺序相同,这也不意味着pk字段首先列出。您可以在任何列上定义pk,而不仅仅是最左边的列。

可能重复@Dekel不是重复的,它甚至不是相同的DBM。答案基于ANSI SQL,可能会有所帮助。我不确定为什么要投票否决这个问题(或标记为离题),因为我确实认为这是一个好问题。
SELECT*
是一个反模式,所以答案应该是“没关系”。不要这样做。这是一种草率的做法,浪费了资源,破坏了优化,如覆盖索引和避免页外blob读取。按照您需要的“顺序”选择您需要的列,这个问题应该是没有意义的。@Michael sqlbot
Select*
主要是出于性能和维护原因,不推荐使用。我不会详细介绍我们正在做的事情,但这些查询是一个通用集合的一部分,仅由管理员用于动态请求有关数据库的信息。可以执行更复杂的查询(通过mysql数据库),但如果mysql能够保证列的顺序,这将简化事情,主要是负责人手工快速查询。在我们的结构中,规则是将PK作为第一列,即在
descripe
命令中它排在第一位。