SQL订单时DISTINCT?

时间:2017-07-27 19:00:00

标签: sql sql-server sql-order-by distinct

我有查询,我使用distinct和order by。 order by子句中使用的两列在Select语句中使用,但它们是连接的。一旦我运行查询错误消息出现:

Msg 145, Level 15, State 1, Line 1
ORDER BY items must appear in the select list if SELECT DISTINCT is specified.

以下是我的查询示例:

SELECT DISTINCT
   si_last +' '+si_first AS UserName
FROM Users
ORDER BY si_last,si_first

我找到的一个解决方案是再次选择si_lastsi_first,但要分开。像这样:

SELECT DISTINCT
   si_last +' '+si_first AS UserName,
   si_last,
   si_first
FROM Users
ORDER BY si_last,si_first

上面的解决方案似乎非常低效,我想知道是否有其他方法可以解决这个问题。如果您有任何建议,请告诉我。谢谢。

1 个答案:

答案 0 :(得分:0)

只需使用完整的表达式:

SELECT DISTINCT (si_last + ' ' + si_first) AS UserName
FROM Users
ORDER BY UserName;

或者,使用GROUP BY

SELECT (si_last + ' ' + si_first) AS UserName
FROM Users
GROUP BY si_last, si_first
ORDER BY si_last, si_first;