Moh*_*eza 5 sql t-sql sql-server concatenation distinct
我有一个简单的一列表,有两个值.我选择它并使用distinct修饰符连接值,但它只获取最新值.我对DISTINCT有误解吗?
DECLARE @table TABLE(Id int)
DECLARE @result VARCHAR(MAX) = ''
INSERT @table VALUES(1), (2)
SELECT
@result = @result + CAST( Id AS VARCHAR(10)) + ','
FROM
@table
SELECT @result --— output: 1,2,
-------same With distinct
SET @result = ''
SELECT DISTINCT @result = @result
+ CAST( Id AS VARCHAR(10)) + ','
FROM @table
SELECT @result --— expected output: 1,2, actual output: 2, why?
Run Code Online (Sandbox Code Playgroud)
快速查看执行计划(以及一些操作)表明 SELECT DISTINCT 也可以排序,因此您可以获得最大 id。
例如,在
INSERT @table VALUES(1),(2),(1),(4), (2), (3)
Run Code Online (Sandbox Code Playgroud)
我会得到结果 4(因为 4 是最高的)。
解决方案?将“distinct”放入子查询中,如下所示:
SELECT
@result = @result
+ CAST( Id AS VARCHAR(10)) + ','
FROM
(SELECT DISTINCT id
FROM @table) Q
Run Code Online (Sandbox Code Playgroud)
结果是:1、2、3、4、
归档时间: |
|
查看次数: |
103 次 |
最近记录: |