2

早上好,

我使用 SQL Server 2008,我有 2 个表加入 App#

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

或者同样可以使用有

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

选择语句的条件不是AND

试试这个

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