【问题标题】:SQL with order by and Top Distinct具有 order by 和 Top Distinct 的 SQL
【发布时间】:2017-01-24 15:19:49
【问题描述】:
SELECT distinct TOP 100 
event.[ExtId],
event.[EventId],
event.[StateId]
FROM
(
SELECT CS.[Id],
CS.[ExternalId],
CS.[EventId],
CS.[StateId]
FROM CS
ORDER BY CS.[Id] asc
) event

给出一个错误,在 SQL 中说 Order BY Clause 子句在视图中无效,等等......什么是最好的正确方法?

【问题讨论】:

  • 为什么要订购子查询?我猜你想订购外部查询。只需将 ORDER BY 放在末尾即可。
  • @NunoMendes 。 . .您能否提供示例数据和预期结果。

标签: sql sql-order-by distinct


【解决方案1】:

你需要使用GROUP BY,因为ORDER BY:

SELECT TOP 100 e.[ExtId], e.[EventId], e.[StateId]
FROM (SELECT DISTINCT CS.[Id], CS.[ExternalId], CS.[EventId], CS.[StateId]
      FROM CS
     ) e
GROUP BY e.[ExtId], e.[EventId], e.[StateId]
ORDER BY MIN(CS.[Id]);

我认为这完全等同于:

SELECT TOP 100 CS.[ExternalId], CS.[EventId], CS.[StateId]
FROM CS
GROUP BY CS.[ExternalId], CS.[EventId], CS.[StateId]
ORDER BY MIN(CS.[Id]);

这是比较典型的逻辑写法。

【讨论】:

  • 嗨,戈登,我想要子查询之外的独特之处
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多