我正在尝试创建只有两列PK ID和唯一名称的字典表:
CREATE TABLE [SnApp].[DictionaryErrorType]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](30) NOT NULL,
CONSTRAINT UC_Name UNIQUE ([Name]),
CONSTRAINT [PK_ID_DictionaryErrorType]
PRIMARY KEY CLUSTERED ([Id] ASC)
)
插入值:
INSERT INTO [SnApp].[DictionaryErrorType] (Name)
VALUES ('Info'), ('Warning'), ('Error')
做完之后:
SELECT *
FROM [SnApp].[DictionaryErrorType]
我得到的输出按名称而不是主键排序
为什么?
我怎么能只有这两列,而是按 ID 而不是按名称排序?
sql 服务器表中的数据本质上不是排序的。它只是存在。
要获得正确的顺序,请使用ORDER BY
select *
from [SnApp].[DictionaryErrorType]
order by ID
您需要明确提及按子句排序
SELECT *
FROM [SnApp].[DictionaryErrorType]
ORDER BY Id
如果您有时默认有聚簇升序索引,它会按排序顺序返回,但您无法保证那里的排序结果