Mysql
 sql >> Base de données >  >> RDS >> Mysql

union tous les deux table mais diff nombre de colonne

Faites juste l'agrégation avant le 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;

Notez que j'ai changé le délimiteur de chaîne pour qu'il soit un guillemet simple plutôt qu'un guillemet double. Il est recommandé d'utiliser des guillemets simples pour les constantes de chaîne et de date (et rien d'autre).

Au fait, vous pouvez également le faire en utilisant une jointure :

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;

Cela facilite l'obtention des décomptes individuels pour les deux bases de données.