Sql server 使用
我正在尝试创建一个查询,该查询返回的结果不包括列中的4个特定值 这是我的密码:Sql server 使用,sql-server,Sql Server,我正在尝试创建一个查询,该查询返回的结果不包括列中的4个特定值 这是我的密码: SELECT CustomerID, ContactName, Country FROM Customers WHERE CustomerID IN (SELECT CustomerID FROM Customers WHERE (Country <> ('UK')('Austr
SELECT CustomerID,
ContactName,
Country
FROM Customers
WHERE CustomerID IN (SELECT CustomerID
FROM Customers
WHERE (Country <> ('UK')('Australia')('Canada')));
如果我只排除一个国家,但不排除多个国家,则此选项有效
提前感谢您提供的任何帮助。请勿在operator中使用
列表应该用逗号分隔,列表中的每个值都不需要开/闭括号。另外,您不需要子查询,只需添加filterwhere子句即可
确保不要在列表中传递任何空值,因为当列表中存在空值时,NOT IN会失败使用NOT IN运算符
Select
CustomerID, ContactName, Country
From Customers
Where CustomerID NOT IN ('USA','UK','Australia','Canada');
列表应该用逗号分隔,列表中的每个值都不需要开/闭括号。另外,您不需要子查询,只需添加filterwhere子句即可
确保在列表中不传递任何空值,因为在列表
< p>中存在空值时不发生故障。您可以考虑在特殊表中定义排除的国家,例如排除国家。这将把数据排除在外的国家/地区与逻辑选择客户不在排除在外的国家/地区分开。在这种情况下,您的查询可以如下所示:Select
CustomerID, ContactName, Country
From Customers
Where CustomerID NOT IN ('USA','UK','Australia','Canada');
select CustomerID, ContactName, Country
from Customers C
left join ExcludedCountry EC ON EC.Name = C.CustomerID
where CustomerID IS NOT NULL
或
这个解决方案的优点是更容易地管理被排除的项目。 < P>你可以考虑在一个特殊的表格中定义被排除的国家,例如被排除的国家。这将把数据排除在外的国家/地区与逻辑选择客户不在排除在外的国家/地区分开。在这种情况下,您的查询可以如下所示:
select CustomerID, ContactName, Country
from Customers C
left join ExcludedCountry EC ON EC.Name = C.CustomerID
where CustomerID IS NOT NULL
或
此解决方案的优点是更容易管理排除的项目。1+第二种建议方式。。。第一个通常表现更差。是的,这就是我的评论,第二个查询可能会更快。这也可能取决于实际看到差异的项目数量。1+表示第二种建议方式。。。第一个通常表现更差。是的,这就是我的评论,第二个查询可能会更快。它也可能取决于实际看到差异的项目数量。