在SQL语句中分组多个“x”和“不象y”
我目前有一个SQL语句对于我的程序来说太长了,我有一个可以使用的最大字符数。我正在使用sccm报告。问题是我的SQL语句如下所示:在SQL语句中分组多个“x”和“不象y”,sql,sccm,Sql,Sccm,我目前有一个SQL语句对于我的程序来说太长了,我有一个可以使用的最大字符数。我正在使用sccm报告。问题是我的SQL语句如下所示: Select distinct v_GS_ADD_REMOVE_PROGRAMS_64.DisplayName0, v_GS_ADD_REMOVE_PROGRAMS_64.Publisher0, v_GS_ADD_REMOVE_PROGRAMS_64.Version0 FROM v_GS_ADD_REMOVE_PROGRAMS_64 JOIN v_R_Syste
Select distinct v_GS_ADD_REMOVE_PROGRAMS_64.DisplayName0, v_GS_ADD_REMOVE_PROGRAMS_64.Publisher0, v_GS_ADD_REMOVE_PROGRAMS_64.Version0
FROM v_GS_ADD_REMOVE_PROGRAMS_64
JOIN v_R_System ON v_GS_ADD_REMOVE_PROGRAMS_64.ResourceID = v_R_System.ResourceID
WHERE (v_R_System.Netbios_Name0 = @computername)
DisplayName0 NOT LIKE 'hpp%'
AND
DisplayName0 NOT LIKE 'Logitech SetPoint%'
AND
DisplayName0 NOT LIKE 'HP Document Manager%'
AND
DisplayName0 NOT LIKE 'HP Imaging Device Functions%'
AND
DisplayName0 NOT LIKE 'PyQt4 - PyQwt5%'
它持续了20页。如何最大限度地减少此请求包含的代码量?是否有一种方法可以将所有displayName0分组,而不是像??使用类似于NOT INvalue1、value2等的选项?如果您在模式中没有拖尾%的问题,则可以将其替换为:
SELECT ... WHERE DisplayName0 NOT IN ('hpp','Logitech SetPoint','HP Document Manager',...)
它会让它变得更短
但在我看来,正确的解决方案是创建一个包含所有需要筛选的名称的[temp]表,然后将其联接。您能将这些值存储在一个单独的表中,然后像这样在查询中引用它吗?:
SELECT DISTINCT v_GS_ADD_REMOVE_PROGRAMS_64.DisplayName0
,v_GS_ADD_REMOVE_PROGRAMS_64.Publisher0
,v_GS_ADD_REMOVE_PROGRAMS_64.Version0
FROM v_GS_ADD_REMOVE_PROGRAMS_64
JOIN v_R_System ON v_GS_ADD_REMOVE_PROGRAMS_64.ResourceID = v_R_System.ResourceID
WHERE (v_R_System.Netbios_Name0 = @computername) DisplayName0 NOT IN (
SELECT DisplayName0
FROM < NewTableName >
)