Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

união de todas as duas tabelas, mas diff número de coluna


Basta fazer a agregação antes de union all :
select sum(cnt) as total
FROM ((SELECT count(*) as cnt
       FROM database1.orders
       WHERE number LIKE '11111111111111111'
      )
      UNION ALL
      (SELECT count(*) as cnt
       FROM database2.orders
       WHERE number LIKE '11111111111111111'
      )
     ) t;

Observe que alterei o delimitador de string para aspas simples em vez de aspas duplas. É uma boa prática usar aspas simples para constantes de string e data (e nada mais).

A propósito, você também pode fazer isso usando uma junção:
select o1.cnt1, o2.cnt1, (o1.cnt1 + o2.cnt1) as total
FROM (SELECT count(*) as cnt1
      FROM database1.orders
      WHERE number LIKE '11111111111111111'
     ) o1 cross join
     (SELECT count(*) as cnt2
      FROM database2.orders
      WHERE number LIKE '11111111111111111'
     ) o2;

Isso torna mais fácil obter as contagens individuais para os dois bancos de dados.