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的错误,则应发布生成该错误消息的代码。目前,答案是关于真实问题的局部情况。请用更多细节展开您的原始问题。