Mysql
 sql >> Database >  >> RDS >> Mysql

unisci tutte e due le tabelle ma differisce il numero di colonne

Basta eseguire l'aggregazione prima di 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;

Nota Ho modificato il delimitatore di stringa in modo che fosse una virgoletta singola anziché una doppia virgoletta. È buona norma utilizzare virgolette singole per le costanti di stringa e data (e nient'altro).

A proposito, puoi farlo anche usando un join:

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;

In questo modo è più facile ottenere i conteggi individuali per i due database.