【发布时间】:2017-04-26 13:27:13
【问题描述】:
SELECT TOP 2 name, lastname, city, DISTINCT(age)
FROM [table1]
WHERE city = 'london' AND name = 'John'
ORDER BY date DESC
我环顾四周,发现 SQL Server 的 distinct 语法很长 - 有没有更好的方法来做到这一点?短而干净(相对)?
目标:返回 2 条记录,其中一条记录年龄 = 18,另一条记录年龄 = 21(均按日期最新)
附:如何在 SQL Server 2016 中实现这一点?
【问题讨论】:
-
每行不同的作品,而不是每列。您的查询无效。此外,即使您将 distinct 移动到正确的位置,您也会收到错误消息,因为如果您使用 distinct,则无法使用 select 子句中不包含的 order by。我建议一起删除不同的,看看你得到了什么。
-
好的。您误解了 short 更好,这在 SQL 中是不正确的。您需要编写高性能代码而不是短代码。忘记优雅,数据库的最佳 sql 代码对大多数开发人员来说似乎并不优雅。
-
@HLGEM 优雅是相对的。一个基于集合的方法代码可以很好地快速完成工作对于 sql 来说是优雅的,即使它对于编程语言来说并不优雅。
-
@HLGEM 你能给我一个工作示例,我将如何用高性能代码解决这个问题?
-
您是否尝试删除
distinct关键字?
标签: sql-server distinct sql-server-2016