2

おはようございます、

私は SQL Server 2008 を使用しており、App# で結合する 2 つのテーブルがあります。

T2 の構造は次のとおりです。

App #   code
---------------    
123     8
123     16
123     32
124     16
125     8
125     16

コードが 16 のアプリケーションのみを印刷する必要があります。私のコードは次のとおりです。

Select appID, Code from T1
Inner join T2 on
T1.AppID = T2.AppID and Code = 16

ただし、app# 123、124、および 125 を含む結果が得られますが、表示するのに必要なのは 124 だけです (コードが 16 のアプリのみを抽出する必要があり、それ以外のものは必要ありません)。

助けてくれてありがとうジョー

4

4 に答える 4

5
SELECT T1.appID
FROM T1
  JOIN T2
    ON  T2.AppID = T1.AppID 
    AND T2.Code = 16
WHERE NOT EXISTS
      ( SELECT *
        FROM T2 
        WHERE T2.AppID = T1.AppID 
          AND T2.Code <> 16
      ) ;
于 2013-01-30T12:26:36.107 に答える
4

これも機能するはずです。これがSql-Demoです

select T2.appId,code
from T2 join T1 on T2.appId = T1.appId
where code = 16 and 
    T2.appId not in (select appId from T2 where code != 16)
于 2013-01-30T12:31:59.550 に答える
0

どこの条件で試してください

select appId, code from (
    select T2.appId, code, count(*) over (partition by T2.appId) CNT
    from T2 join T1 on T2.appId = T1.appId
    where code=16 
)x where CNT=1

または、having を使用して同じことを行うことができます

select 
    T2.appId, code
from T2 join T1 on T2.appId = T1.appId
where code=16 
group by T2.appId, code
having count(T2.appID)=1
于 2013-01-30T12:20:00.997 に答える
-1

select ステートメントの条件はAND以外の場所です

これを試してください

Select appID, Code from T1
Inner join T2 on
T1.AppID = T2.AppID
where t1.code=16
于 2013-01-30T12:29:10.340 に答える