我有查询,我使用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_last
和si_first
,但要分开。像这样:
SELECT DISTINCT
si_last +' '+si_first AS UserName,
si_last,
si_first
FROM Users
ORDER BY si_last,si_first
上面的解决方案似乎非常低效,我想知道是否有其他方法可以解决这个问题。如果您有任何建议,请告诉我。谢谢。
答案 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;