Sql 从重复项中选择/更新单个字段

Sql 从重复项中选择/更新单个字段,sql,sql-server,tsql,Sql,Sql Server,Tsql,这是我的Sql: SELECT * FROM parameter1 WHERE parameter1_ID IN (34,11) 这将导致超过400个结果(这是正常的),大多数结果在“值”列中有多个值,而一些结果在“值”列中有重复和多个值。我想消除它们各自结果中的重复值,我可以向这个查询添加什么来做到这一点? 使用mssqlstudio 查询的结果示例: ID VALUE 1 100,200 2 100,100,200 3 200,200,300 4 200,200

这是我的Sql:

SELECT * FROM parameter1
WHERE parameter1_ID IN (34,11)
这将导致超过400个结果(这是正常的),大多数结果在“值”列中有多个值,而一些结果在“值”列中有重复和多个值。我想消除它们各自结果中的重复值,我可以向这个查询添加什么来做到这一点? 使用mssqlstudio

查询的结果示例:

ID   VALUE
1    100,200
2    100,100,200
3    200,200,300
4    200,200,300
我想要的结果

ID   VALUE
1    100,200
2    100,200
3    200,300
4    200,300

正如许多其他人所说,您存储数据的方式是一种非常糟糕的做法,几乎肯定会在将来引起更多的麻烦

这就是说,如果你实际上无法改变这一点,你仍然可以选择。在SQL Server 2017中,您可以使用
string\u split
string\u agg

declare @t table(ID int, val varchar(40))
insert into @t values
 (1,'100,200')
,(2,'100,100,200')
,(3,'200,200,300')
,(4,'200,200,300');

with s as
(
    select distinct t.ID
                   ,s.[value] as val
    from @t as t
        cross apply string_split(t.val,',') as s
)
select s.ID
      ,string_agg(s.val,',') as val
from s
group by s.ID;
输出
VALUE
列是否包含以逗号分隔的值列表作为字符串(例如
varchar
)?是否为na数组(例如,在Postgres中)?它是与另一个表联接的结果吗?是的,它包含逗号分隔的值列表。是的,它是varchar。您应该回答您的问题并添加您正在使用的DBMS的标记。你在使用Oracle吗?您正在使用SQL Server吗?你在使用PostgreSQL吗?该解决方案可能需要一个内置的数据库功能,这些功能在不同DBMS的sIm卡中不是标准的,不确定,但应该是sql server。我是新来的,我怎么能确定我在使用预制数据库,我真的没有选择。当我尝试运行你给我的代码时,它会给我一个错误
Msg 208,级别16,状态1,第8行对象名称“string_split”无效。
如何更改它以适合我的情况?@Nugget您的databsae运行的兼容性级别是否低于2017?如果是这样的话,无论是
string\u split
还是
string\u agg
都不适合您,但是网上有很多资源将向您展示如何在更普通的SQL中实现相同的逻辑。
+----+---------+
| ID |   val   |
+----+---------+
|  1 | 100,200 |
|  2 | 100,200 |
|  3 | 200,300 |
|  4 | 200,300 |
+----+---------+