在许多表中查找共同值

Find common values in many tables

我有 5 个表,我想在一列中找到它们之间的共同值。列名在两个表中不同(account_number, account,account_id).

select * from db.table1 as a 
INNER JOIN db.table2 as b
ON a.account = b.account_id
INNER JOIN db.table3 as c
ON a.account = c.account_number
INNER JOIN db.table4 as d 
ON a.account  = d.account_number
INNER JOIN db.table_5 as f
ON a.account = f.account_number;`

我尝试了上面的方法,每次都将内部连接的最后结果与新结果进行比较,但它似乎是错误的。

你的方法没问题,但它可以return重复。另一种方法是使用 union all:

select account
from ((select account, 'a' as which from db.table1) union all
      (select account_id, 'b' as which from db.table2) union all
      (select account_number, 'c' as which from db.table3) union all
      (select account_number, 'd' as which from db.table4) union all
      (select account_number, '3' as which from db.table5) 
     ) t
group by account
having count(distinct which) = 5;

请注意,这可以很容易地进行调整,以获取三个或四个表格中的帐户,而不是所有表格中的帐户。