2013-09-26 48 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

相關問題