【问题标题】:SQL server Sorting columnSQL server 排序列
【发布时间】:2018-12-10 11:50:29
【问题描述】:

如果我们编写了一个没有使用 order by 子句的 SQL 选择命令,那么在显示选择命令的记录时将在哪个列上进行排序...

create table test
(
ID int identity (1,1) primary key,
em_id int,
name varchar(20),
address varchar(20)
mobile number int
)

假设表格像上面的结构和选择命令一样

select * from test

那么我如何检查由 sql 完成排序的列名..

【问题讨论】:

  • 在 SQL 语言中,如果您想要特定的排序,请添加 ORDER BY 子句。没有其他方法可以指定排序。即使特定的 storage 订单将以最便宜的方式返回数据,除非指定了 ORDER BY 子句。这很常见,例如在使用并行处理时
  • 好吧,不可能在创建表时强制执行某些默认列排序。但在 Sql Server 2012 中,我假设如果将其与 OFFSET 0 ROWSTOP 结合使用,您可以使用 ORDER BY 创建视图。但不确定这是否适用于 SQL Server 2008。

标签: sql sql-server tsql sql-server-2008 database-administration


【解决方案1】:

在这样的查询中:

select *
from test;

结果集未排序。

SQL 表代表无序 集合。多次运行查询会产生相同的结果集,但行的顺序不同。

如果您想要在结果集中进行特定排序,则需要包含order by

您可能会将“排序”与聚集索引混淆。如果是这样,您可以使用系统元数据表在聚集索引(如果存在)中找到键。但数据不能保证由聚集索引返回除非您在查询中有order by

【讨论】:

  • 那么如何从数据文件中获取日期呢?数据将按照插入顺序填充?
  • @SarveshBandekar 不,正如 Gordon 告诉你的那样:没有隐式排序顺序。同一个调用可以返回不同排序的集合。如果您需要排序顺序,您必须在最外面的查询中使用ORDER BY
  • okkk 谢谢我明白了....对不起这个愚蠢的问题,但如果我已经写了一个 order by 子句,但我也想在统计中按列检查 order,那么我怎么能检查列相同....
【解决方案2】:

如果您想在结果集中进行特定排序,则需要包含 order by 子句。 默认情况下 order by(如果您指定 order by 子句)按 ASC 顺序排列。

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多