“not exists”不排除表中的行

时间:2015-03-13 04:11:11

标签: sql-server

我试图从我的结果中排除某些行但却无法使其工作。

我在尝试什么:

SELECT TOP 5 * FROM SubCategory 
WHERE not exists
(SELECT null FROM SubCategory WHERE subCategory = 'Games')
ORDER BY views DESC

我希望它排除值为“Games”的行。但是,当我运行它时,它什么都不返回。

我正在使用Microsoft SQL Server 2012。

2 个答案:

答案 0 :(得分:1)

我没有得到你想要做的事。只有当不存在符合条件的行时,您的查询才会返回行。如果这就是你想要的,那么是的,你所拥有的应该是什么。

从你的描述来看,听起来你似乎更喜欢这样:

SELECT TOP 5 *
FROM SubCategory 
WHERE subcategory <> 'Games'
ORDER BY views DESC

除此之外,我还不确定你要去做什么。

答案 1 :(得分:0)

不需要使用NOT EXISTS子句,WHERE子句上的简单过滤器将为您提供预期的结果。

试试这个。

SELECT TOP 5 * FROM SubCategory
WHERE SubCategory <> 'Games'
ORDER BY [views] DESC