我手动建一个表,只有两列,一个ID列,一个名字列,ID列是自增列,把名字列设为主键。
用SQL Server的导出建表代码,如下USE [test]
GO
/****** 对象:  Table [dbo].[学生表]    脚本日期: 09/28/2011 11:40:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[学生表](
[ID] [int] IDENTITY(1,1) NOT NULL,
[名字] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
 CONSTRAINT [PK_学生表] PRIMARY KEY CLUSTERED 
(
[名字] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]GO
SET ANSI_PADDING OFF这里明显的能看到一句"[名字] ASC",说明SQL Server是把主键作为排序规则的,但我现在不想要这种排序,想要让自增列作为排序,我指的不是用SQL语句查询的时候加个"ID asc"这样,而是在打开表的时候,显示的结果,按照,ID ASC,而非"名字 ASC"

解决方案 »

  1.   

    --那只是主键的排序方式,不是你查询的排序方式,你在查询时只要:
    order by id
    --就行了.
      

  2.   

    alter TABLE [dbo].[学生表] CONSTRAINT [PK_学生表] PRIMARY KEY CLUSTERED 
    (
        [ID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    试试
      

  3.   

    键的排序是指键索引的排列方式,在查询语句里,根据查询条件在索引里找,再指向具体的行.
    但如果你查询时没有将索引列作为条件列来处理,那它就不会去考虑索引.
    即使用了它的索引,输出时的排序仍是按你的order来的.
      

  4.   

    我指的不是用SQL语句查询的时候加个"ID asc"这样,而是在打开表的时候,显示的结果,按照,ID ASC,而非"名字 ASC"那你对ID列建立个索引.
      

  5.   

    说的就不是查询时啊,是在SQL Server里打开表的时候啊,这个也挺常用的啊,经常看刚刚插入的数据,对不对
      

  6.   

    lz应该去了解一下聚集索引了
    Lz可以将聚集索引修改为id列,就行了
      

  7.   

    ALTER TABLE [dbo].[学生表]  DROP CONSTRAINT [PK_学生表]
    GOALTER TABLE [dbo].[学生表]  ADD CONSTRAINT [PK_学生表] PRIMARY KEY CLUSTERED 
    (
        [ID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]GO
      

  8.   

    我再举个例子吧,我另一个表,的建表语句这么写
    USE [test]
    GO
    /****** 对象:  Table [dbo].[学生表2]    脚本日期: 09/28/2011 11:51:15 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[学生表2](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [名字] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
     CONSTRAINT [PK_学生表2] PRIMARY KEY CLUSTERED 
    (
    [ID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]GO
    SET ANSI_PADDING OFF
    只在约束条件里改成
    [ID] ASC
    就能达到我上面需的要求,但这只限于建表,我想修改刚才已经建好的表,怎么办