SQL - 选择不同的过滤

时间:2015-03-17 17:42:12

标签: sql

我需要查找表中不包含特定值的每个条目。我正在撰写一份报告,该报告将提取未安装特定软件ID的每个不同工作站名称。我正在拉出的表中有每个机器上安装的每个软件的条目。

SELECT DISTINCT ws_name

FROM table

WHERE software_id 123 does not exist

我不知道用什么代码替换上面代码的“不存在”部分。

2 个答案:

答案 0 :(得分:0)

更多地了解表模式(以及您使用的DBMS)可能有助于提供更好的答案。仍然有你所拥有的我认为你可以使用这样的东西:

SELECT DISTINCT ws_name
FROM table
WHERE ws_name NOT IN (SELECT DISTINCT ws_name 
                      FROM table
                      WHERE software_id = 123)

答案 1 :(得分:0)

如果我正确理解了该问题,您希望排除在任何行ws_name software_id = 123的{​​{1}}。如果这是正确的,您需要一个子查询:

SELECT DISTINCT ws_name
FROM   mytable a
WHERE  NOT EXISTS (SELECT *
                   FROM   mytable b
                   WHERE  a.ws_name = b.ws_name AND b.software_id = 123)

或者使用带有子查询的in运算符:

SELECT DISTINCT ws_name
FROM   mytable
WHERE  ws_name NOT IN (SELECT ws_name
                       FROM   mytable
                       WHERE  software_id = 123)