我有两个表tb_acct和tb_txn
tb_acct (acct_num, acct_name)
tb_txn (txn_memo, originator_acct_num, receiver_acct_num)
tb_txn
可与tb_acct
和originator_acct_num
上的receiver_acct_num
加入
我想编写一个查询来返回tb_acct中的记录数,其中acct_num与originator_acct_num和receiver_acct_num都不匹配,即所有那些无法绑定到tb_acct表的记录。
答案 0 :(得分:0)
目前还不清楚你是否意味着要么没有回头,要么两者兼而有之。但是,相同的结构是有效的。任何一方不匹配导致失败的版本是:
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);
如果两者都不匹配,请将or
更改为and
。
答案 1 :(得分:0)
这就是你提出的问题:
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
)
;
对于您是否希望在两个列中都没有显示的帐户存在一些小混淆(因此我需要修改我的查询以将OR
拆分为两个{{1}或者你是否想要 列中没有表示的帐户(我为你写的)。