2013-09-26 1 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 필드에 가입해야한다.

이 점에 관해서는 이와 같이 많은 SQL을 다루는 read of this Q&A that I put together을 사용할 수도 있습니다.

+0

이 경우 쿼리로드가 느려 집니까? 또는 그것이 해야하는대로 완전히 괜찮습니까? – nRov

+0

알려주세요. – nRov

+0

@nRov 아니에요. 내 말은, 'not in'은 'not = 21 or not 25'로 대체 될 수 있지만, 실제로는 많은 것들에 영향을 미칠 것입니다. – Fluffeh

관련 문제