创建具有唯一列更改排序顺序的表



我正在尝试创建只有两列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

如果您有时默认有聚簇升序索引,它会按排序顺序返回,但您无法保证那里的排序结果

最新更新