繁体   English   中英

SQL Server 2008 - 内部联接

[英]SQL Server 2008 - Inner join

早上好,

我使用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

但是我得到的结果包括应用#123,124和125,但我只需要显示124(我只需要提取代码为16而不是其他内容的应用。)

谢谢你的帮助乔

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
      ) ;

这也应该有效; 这是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)

请尝试在哪里的条件

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

在选择statment的condtion 就是

尝试这一个

Select appID, Code from T1
Inner join T2 on
T1.AppID = T2.AppID
where t1.code=16

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM