SQL区别重复

时间:2015-08-05 15:15:01

标签: sql duplicates distinct

我确信这是一个简单的问题,我发誓我搜索了论坛但没有任何帮助。我有一个SQL查询,我想要不同的SYS.Name0:

SELECT DISTINCT SYS.Name0 As 'PC Name', PR.Name0 AS 'Printer Name'
FROM v_R_System SYS
INNER JOIN v_GS_PRINTER_DEVICE PR
ON SYS.ResourceID = PR.ResourceID
WHERE SYS.AD_Site_Name0 = 'Texas'

即使使用DISTINCT,我也会获得重复的SYS.Name0(PC名称)。

搜索论坛后,我添加了GROUP BY SYS.Name0

但后来我收到了错误:

  

列' v_GS_PRINTER_DEVICE.Name0'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

非常感谢任何帮助

2 个答案:

答案 0 :(得分:0)

如果您想要其他列,则应使用group by。然后你必须决定如何处理其他列,例如:

SELECT SYS.Name0 As PC_Name, MAX(PR.Name0) AS Printer_Name
FROM v_R_System SYS INNER JOIN
     v_GS_PRINTER_DEVICE PR
     ON SYS.ResourceID = PR.ResourceID
WHERE SYS.AD_Site_Name0 = 'Texas'
GROUP BY SYS.Name0;

注意:我建议您不要对列名使用单引号。使用为数据库定义的分隔符,可能是双引号,方括号或后面的刻度。

答案 1 :(得分:0)

包含按结果分组的列:

SELECT DISTINCT SYS.Name0 AS 'PC Name', PR.Name0 AS 'Printer Name'
FROM            v_R_System AS SYS INNER JOIN
                         v_GS_PRINTER_DEVICE AS PR ON SYS.ResourceID = PR.ResourceID
WHERE        (SYS.AD_Site_Name0 = 'Texas')
GROUP BY SYS.Name0, PR.Name0