Mysql 如何将表2从表1更新为表2中的相应条目?

Mysql 如何将表2从表1更新为表2中的相应条目?,mysql,sql,database,union,Mysql,Sql,Database,Union,我想统计不同表中银行的出现次数,并在FinalTable的相应列中进行更新 银行表: BankName ErrorCode SBI 200 ICICI 200 SBI 400 SBI 500 SBI 503 ATMTable: BankName ErrorCode ICICI 200 ICICI 400 ICICI 400 SBI

我想统计不同表中银行的出现次数,并在FinalTable的相应列中进行更新

银行表:

  BankName  ErrorCode
    SBI         200
    ICICI       200
    SBI         400
    SBI         500
    SBI         503
ATMTable:

BankName    ErrorCode
ICICI       200
ICICI       400
ICICI       400
SBI         500
SBI         503
MitraTable:

BankName    ErrorCode
ICICI        200
ICICI        200
SBI          400
SBI          500
SBI          503
PNB          501  
财务报表:

BankName    BankCount   ATMCount    MitraCount  TotalCount
ICICI            1         3           2          6
SBI              4         2           3          9
PNB              0         0           1          1

我想计算不同银行的占用率,并在FinalTable中设置值。

您可以使用
UNION ALL
和条件聚合:

SELECT BankName,
       COUNT(CASE WHEN src = 'Bank' THEN 1 END) AS BankCount,
       COUNT(CASE WHEN src = 'ATM' THEN 1 END) AS ATMCount,
       COUNT(CASE WHEN src = 'Mitra' THEN 1 END) AS MitraCount,
       COUNT(*) AS TotalCount

FROM (
   SELECT BankName, 'Bank' AS src 
   FROM BankTable

   UNION ALL 

   SELECT BankName, 'ATM' AS src
   FROM ATMTable

   UNION ALL

   SELECT BankName, 'Mitra' AS src
   FROM MitraTable) AS t
GROUP BY BankName
字段
src
用于将源表返回到使用
UNION ALL
操作结果的外部查询。使用此字段,我们可以执行条件聚合,以统计每个源表中每个银行的发生率。

尝试以下操作:

SELECT BankName, 
       SUM(BankCount) AS BankCount, 
       SUM(ATMCount) AS ATMCount, 
       SUM(MitraCount) AS MitraCount, 
       SUM(BankCount + ATMCount + MitraCount) AS TotalCount 
FROM (SELECT BankName, 
             COUNT(ErrorCode) AS BankCount, 
             0 AS ATMCount, 
             0 AS MitraCount 
      FROM BankTable 
      GROUP BY BankName 
     UNION 
      SELECT BankName, 
             0 AS BankCount, 
             COUNT(ErrorCode) AS ATMCount, 
             0 AS MitraCount 
      FROM ATMTable 
      GROUP BY BankName 
     UNION 
      SELECT BankName, 
             0 AS BankCount, 
             0 AS ATMCount, 
             COUNT(ErrorCode) AS MitraCount 
      FROM MitraTable 
      GROUP BY BankName
    ) AS A
GROUP BY BankName;

还包括其他RDBMS标记。。。使其成为MyStry。我删除了不兼容的数据库标记。请仅使用您实际使用的数据库标记问题。请阅读-总结是,这不是向志愿者提问的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。