0
select aaa.BookId from
(SELECT     TOP (100) PERCENT Id, BookId,CreatedOnUtc
                       FROM          dbo.Chapter AS c
                       ORDER BY CreatedOnUtc desc             
                       ) as aaa
group by aaa.BookId

ORDER BY CreatedOnUtc desc が結果に影響を与えないのはなぜですか。

このような結果を出したい

BookId    (with desc createdonUtc)
3
4
1
...

更新:私はこれで行きます

select BookId, Max(CreatedOnUtc)
from Chapter
group by BookId
order by Max(CreatedOnUtc) desc
4

1 に答える 1

2

ORDER BY はサブクエリ専用です。外側のクエリには order by 句がないため、結果は任意の順序になる可能性があります。

他のもの:

  • なぜTOP 100 PERCENTですか?
  • 集計列がないのはSELECT BookIdなぜですか? GROUP BY BookId多分あなたはただしたいSELECT DISTINCTですか?

また、あなたが達成したいことは不可能かもしれません。このテーブルに BookId が重複している場合:

ID BookId CreatedOnUtc
1  1      1
2  2      2
3  1      3

あなたの結果はどのような順序で表示されますか? 1 2 または 2 1?

于 2013-10-30T10:30:49.230 に答える