从 sql 中的结果中删除重复项
remove duplicate from result in sql
我必须合并来自两个查询的值并以逗号分隔显示,并且需要从中区分出来。我尝试在每个值中全部使用 join/union 或使用不同的值,但如果这些值很常见,我仍然会得到重复项,有人可以帮忙解决这个问题吗?下面是我的查询和输出
SELECT DISTINCT
(SELECT DISTINCT
ISNULL((SELECT TOP 1 PV.serialnumber
FROM ConsumerItemsTable PV
WHERE PV.ItemID = 61) + ',' , '') +
ISNULL(STUFF((SELECT distinct ',' + itemid
FROM CustomerItems b
WHERE Name = 'WillamRobbe'
FOR XML PATH('')), 1, 1, '') + ',' , ''))
第一个查询的输出是 0991345
第二个查询的输出是0033874,0991345,8877425
- 预期输出为 0033874,0991345,8877425
- 当前输出为0991345,0033874,0991345,8877425
这是一种使用 union
并使用派生的 table:
将外部 select
移动到 for xml
查询中的方法
select stuff((
select ',' + itemid
from (
select itemid
from CustomerItems b
where Name = 'WillamRobbe'
union
select top 1 serialnumber
from ConsumerItemsTable pv
where pv.Itemid = 61
) s
for xml path('')
), 1, 1, '')
rextester 演示:http://rextester.com/UXIK17206
returns: 0033874,0991345,8877425
我必须合并来自两个查询的值并以逗号分隔显示,并且需要从中区分出来。我尝试在每个值中全部使用 join/union 或使用不同的值,但如果这些值很常见,我仍然会得到重复项,有人可以帮忙解决这个问题吗?下面是我的查询和输出
SELECT DISTINCT
(SELECT DISTINCT
ISNULL((SELECT TOP 1 PV.serialnumber
FROM ConsumerItemsTable PV
WHERE PV.ItemID = 61) + ',' , '') +
ISNULL(STUFF((SELECT distinct ',' + itemid
FROM CustomerItems b
WHERE Name = 'WillamRobbe'
FOR XML PATH('')), 1, 1, '') + ',' , ''))
第一个查询的输出是 0991345
第二个查询的输出是0033874,0991345,8877425
- 预期输出为 0033874,0991345,8877425
- 当前输出为0991345,0033874,0991345,8877425
这是一种使用 union
并使用派生的 table:
select
移动到 for xml
查询中的方法
select stuff((
select ',' + itemid
from (
select itemid
from CustomerItems b
where Name = 'WillamRobbe'
union
select top 1 serialnumber
from ConsumerItemsTable pv
where pv.Itemid = 61
) s
for xml path('')
), 1, 1, '')
rextester 演示:http://rextester.com/UXIK17206
returns: 0033874,0991345,8877425