Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何返回与联接条件不匹配的行数_Sql_Sql Server - Fatal编程技术网

Sql 如何返回与联接条件不匹配的行数

Sql 如何返回与联接条件不匹配的行数,sql,sql-server,Sql,Sql Server,我有两张表tb_acct和tb_txn tb_acct (acct_num, acct_name) tb_txn (txn_memo, originator_acct_num, receiver_acct_num) tb\u txn可以与tb\u账户在发起人账户和接收人账户 我想写一个查询来返回tb_账户中的记录数,这些记录的账号与发起人账号和接收人账号都不匹配,即所有那些无法绑定到tb_账户表的记录。不清楚您的意思是要么不绑定,要么两者都不匹配。但是,同样的结构也起作用。任何一侧的不匹配导致

我有两张表tb_acct和tb_txn

tb_acct (acct_num, acct_name)
tb_txn (txn_memo, originator_acct_num, receiver_acct_num)
tb\u txn
可以与
tb\u账户
发起人账户
接收人账户


我想写一个查询来返回tb_账户中的记录数,这些记录的账号与发起人账号和接收人账号都不匹配,即所有那些无法绑定到tb_账户表的记录。

不清楚您的意思是要么不绑定,要么两者都不匹配。但是,同样的结构也起作用。任何一侧的不匹配导致故障的版本为:

select t.*
from tb_txn t
where not exists (select 1 from tb_acct a where a.acct_num = t.originator_acct_num) or
      not exists (select 1 from tb_acct a where a.acct_num = t.receivor_acct_num);

如果两者不匹配,请将
更改为

这会满足您的要求:

SELECT
  Count(*)
FROM
   tb_acct A
WHERE
   NOT EXISTS (
      SELECT *
      FROM
         tb_txn T
      WHERE
         A.acct_num = T.originator_acct_num
         OR A.acct_num = T.receiver_acct_num
   )
;
但我不知道你的意思是:

SELECT
   Count(*)
FROM
   tb_txn T
WHERE
   NOT EXISTS (
      SELECT *
      FROM
         tb_acct A
      WHERE
         T.originator_acct_num = A.acct_num
         OR T.receiver_acct_num = A.acct_num
   )
;

对于您是否希望在两列中都没有表示的帐户(因此需要修改我的查询以将
拆分为两个
EXISTS
子句),或者您是否希望在两列中都没有表示的帐户(我为您编写的内容)。

到目前为止您尝试了什么?你是说
发起者账户数量
还是
接收者账户数量
?你是对的,我的意思是你想知道的。对不起,我发错了。谢谢。将运行查询并接受正确的答案。是否可能不需要事务表中与accounts表不匹配的事务行数,而是需要与tb\U acct表上的原始\u acct\u num和接收方\u acct\u num都不匹配的txn行数。