sql - 在左连接上返回不同的行数

标签 sql sql-server

我有两个sql查询,其中一个我执行左外连接,两者都应返回相同的记录数,但两个sql查询中返回的行数不同

select Txn.txnRecNo 
from Txn 
inner join Person on Txn.uwId = Person.personId 
full outer join TxnInsured on Txn.txnRecNo = TxnInsured.txnRecNo 
left join TxnAdditionalInsured on Txn.txnRecNo = TxnAdditionalInsured.txnRecNo 
where Txn.visibleFlag=1 
and Txn.workingCopy=1 

返回20条记录

select  Txn.txnRecNo 
from Txn 
inner join Person on Txn.uwId = Person.personId 
full outer join TxnInsured on Txn.txnRecNo = TxnInsured.txnRecNo 
where Txn.visibleFlag=1 
and Txn.workingCopy=1

返回15条记录

最佳答案

我怀疑 TxnAdditionalInsured 表有重复记录。使用不同

select distinct Txn.txnRecNo 
from Txn 
inner join Person on Txn.uwId = Person.personId 
full outer join TxnInsured on Txn.txnRecNo = TxnInsured.txnRecNo 
left join TxnAdditionalInsured on Txn.txnRecNo = TxnAdditionalInsured.txnRecNo 
where Txn.visibleFlag=1 
and Txn.workingCopy=1

关于sql - 在左连接上返回不同的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35885169/

相关文章:

mysql - 将 mysql 输出从行转换为列

.net - linq 与 sql(或 .NET 应用程序与 SQL Server Management Studio)

sql - 其他字段上的窗口功能平局断路器以获取最新记录

sql-server - 如何使用Flyway命令行客户端和flyway.conf迁移多个数据库?

sql-server - 如何在 SQL SERVER 中更新前一行数据

sql-server - 为什么要使用交叉Apply来获取XML中的值?

mysql - 在不同的行上选择满足不同条件的值?

mysql - 在MYSQL中使用Group By,同时在另一列上使用distinct

sql-server - 敏感 SSIS 包参数字符串中的特殊字符使包无效

sql - 仅在存在时更改 TRIGGER