将多条记录插入 SQL 表时,它不遵循顺序

Posted

技术标签:

【中文标题】将多条记录插入 SQL 表时,它不遵循顺序【英文标题】:When inserting multiple record into a SQL table it does not follow the order 【发布时间】:2020-12-13 02:05:39 【问题描述】:

如下图使用单个insert语句将多条记录添加到表中时,选择时不遵循相同的顺序。我知道它不会影响任何事情,但我可以知道为什么会这样吗?

CREATE TABLE [category]
(
    [category_id] int IDENTITY(1,1) PRIMARY KEY,
    [category_name] varchar(255) NOT NULL UNIQUE
);
INSERT INTO [category] (category_name) 
VALUES ('Laptops and Accessories'),
       ('AI Development Kit'),
       ('Cameras and Lens');

SELECT * FROM [category]

输出:

我正在使用 SQL Server。

【问题讨论】:

“我正在使用 MS SQL,但无法添加标签”——因为它实际上被称为“SQL Server”。但是在键入“mssql”时,SQL Server 标记会出现在选择中。 【参考方案1】:

您的 select 语句明确表示:“我不关心订单!” - 它通过省略 ORDER BY 子句来做到这一点。

如果你说SELECT * FROM [category] ORDER BY [category_id],你会得到一个有序的结果集

1, 'Laptops and Accessories'
2, 'AI Development Kit'
3, 'Cameras and Lens'

这正是您在INSERT 声明中给出的顺序。

在没有ORDER BY 子句的 SQL 中,SELECTs 不仅不希望有某种顺序,而且在多次调用时也不希望它们具有相同的顺序。

【讨论】:

以上是关于将多条记录插入 SQL 表时,它不遵循顺序的主要内容,如果未能解决你的问题,请参考以下文章

02-SQLSERVER插入数据

MySQL-数据相关sql语句

MySQL-数据相关sql语句

如何确定实际的数据库行插入顺序?

SQL索引及表的页的逻辑顺序与物理顺序

SQL3