Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不同的排序不到位_Sql_Sql Server - Fatal编程技术网

Sql 不同的排序不到位

Sql 不同的排序不到位,sql,sql-server,Sql,Sql Server,我有一个临时表,列出了按不同列排序的姓名列表,例如 @table: John, 1 Mary, 3 Mary, 5 Mary, 7 John, 8 Kyle, 9 Brad, 10 当我调用一个简单的select*from@table,这就是我得到的,但是当我调用一个select distinct name from@table时,我得到以下结果: Kyle John Mary Brad 为什么不使用就地订购?这是我不知道的sql怪癖吗?我希望(并且希望)它是: John Mary Kyl

我有一个临时表,列出了按不同列排序的姓名列表,例如

@table:

John, 1
Mary, 3
Mary, 5
Mary, 7
John, 8
Kyle, 9
Brad, 10
当我调用一个简单的
select*from@table
,这就是我得到的,但是当我调用一个
select distinct name from@table
时,我得到以下结果:

Kyle
John
Mary
Brad
为什么不使用就地订购?这是我不知道的sql怪癖吗?我希望(并且希望)它是:

John
Mary
Kyle
Brad

编辑:附加问题:由于我在原始表上“按”排序,是否有功能上的原因使其无法持久存在?

使用
选择不同的
时,您不能按未选择的列排序。做你想做的事情最简单的方法是:

SELECT name FROM @table GROUP BY name ORDER BY min(id);

行顺序实际上不存在,缺少排序依据
。如果需要明确的订单,则必须按
提供
订单。数据不会按特定顺序存储。您必须通过使用
order by指定所需的顺序。我们正在讨论SQL Server、MySQL、Oracle、DB2、Access、…?SQL Server,现在我得到消息1033,级别15,状态1,第61行order by子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP或FOR XML。@这可能更容易查看您的代码。如果您在视图等中收到有关order by的错误,则应发布生成该错误消息的代码。目前,答案是关于真实问题的局部情况。请用更多细节展开您的原始问题。