繁体   English   中英

sql server内部联接两个表并使用两个字段进行过滤,以获取额外的记录

[英]sql server inner join two tables and filter with two fields, getting extra records

我在获取两个表之间的INNER JOIN SELECT以获取正确的输出时遇到问题。

SELECT *
FROM PERSON_TABLE
WHERE MYSOMETHINGID = 123

结果是

ID   PERSON_ID     PERSON     IS_SELECTED    IS_BACKUP  MYSOMETHINGID 
2    -1            PERSON1    0              0          123
3    12            PERSON2    0              1          123
4    13            PERSON3    1              0          123
5    15            PERSON4    0              1          123
6    22            PERSON5    0              0          123

select *
from ASSIGNED_TABLE
where MYSOMETHINGID = 123

ID   PERSON_ID     PERSON     MYSOMETHINGID 
3    12            PERSON2    123
4    13            PERSON3    123
5    15            PERSON4    123

我想内部加入两家公司,并且仅选择IS_SELECTED = 1的记录,以及ASSIGNED_TABLE中是否存在PERSON_TABLE的记录

这是我的查询

select *
from ASSIGNED_TABLE AT inner join
     PERSON_TABLE PT
     on PT.IS_SELECTED = 1 AND AT.PERSON_ID = PT.PERSON_ID
where AT.MYSOMETHINGID = 123

ID   PERSON_ID     PERSON     MYSOMETHINGID   IS_SELECTED   IS_BACKUP
3    12            PERSON2    123             1             0
4    13            PERSON3    123             1             0
5    15            PERSON4    123             1             0

我期待PERSON13,因为它是唯一具有IS_SELECTED = 1的记录。我不明白为什么我得到3条记录而不是1条记录,而奇怪的是,IS_SELECTED的所有3条记录均为1条,所有的IS_BACKUP为0条

任何帮助是极大的赞赏。 谢谢。

我认为您还需要加入mysomethingid

select *
from ASSIGNED_TABLE AT inner join
     PERSON_TABLE PT
     on PT.IS_SELECTED = 1 AND
        AT.PERSON_ID = PT.PERSON_ID AND
        AT.MYSOMETHINGID = PT.MYSOMETHINGID
where AT.MYSOMETHINGID = 123;

尝试这个

select *
  from ASSIGNED_TABLE AT 
 inner join PERSON_TABLE PT
  on AT.PERSON_ID = PT.PERSON_ID
 where PT.IS_SELECTED = 1 AND MYSOMETHINGID = 123

另一种方法是仅选择is_selected = 1的行

select *
from ASSIGNED_TABLE AT inner join
 PERSON_TABLE PT ON
 AT.PERSON_ID = PT.PERSON_ID
where AT.MYSOMETHINGID = 123 AND PT.IS_SELECTED = 1

暂无
暂无

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

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