2013-09-26 50 views
0

我有这样的:如何从这个mssql/php查询中排除某些东西?

SELECT TOP 100 
    IDNum, 
    IDName, 
    Nation, 
    (SELECT 
     SUM(Loyalty) 
    FROM 
     USERDATA 
    WHERE 
     USERDATA.Knights = KNIGHTS.IDNum 
     AND USERDATA.Authority IN(1, 2) 
    ) as ClanLoyalty 
FROM 
    KNIGHTS 
ORDER BY 
    ClanLoyalty DESC 

,但我想排除Knights(21 and 25)所以骑士IDNum 21和25不会被包含在该查询?

如何排除它们?

回答

0

这不是一个简单的你的外部查询的where子句吗?

SELECT TOP 100 
    IDNum, 
    IDName, 
    Nation, 
    (SELECT 
     SUM(Loyalty) 
    FROM 
     USERDATA 
    WHERE 
     USERDATA.Knights = KNIGHTS.IDNum 
     AND USERDATA.Authority IN(1, 2) 
    ) as ClanLoyalty 
FROM 
    KNIGHTS 
where 
    knights.idnum not in (21,22) 
ORDER BY 
    ClanLoyalty DESC 

如果从主查询中排除的话,他们将不会在内部查询匹配不管是你让他们加入在IDNUM场进不去。

在这个笔记上,你可能也想要一个read of this Q&A that I put together,它涵盖了很多像这样的SQL。

+0

不会这使查询加载速度较慢?或者它应该是完全正确的? – nRov

+0

你可以让我知道吗? – nRov

+0

@nRov不是。我的意思是,“不在”可以用“不= 21或不是25”来代替,但我怀疑这会对事情产生多大的影响。 – Fluffeh

相关问题