Mysql
 sql >> Datenbank >  >> RDS >> Mysql

vereinen Sie alle zwei Tabellen, aber die unterschiedliche Anzahl der Spalten

Führen Sie einfach die Aggregation vor dem union all durch :

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;

Beachten Sie, dass ich das Zeichenfolgentrennzeichen in ein einfaches Anführungszeichen und nicht in ein doppeltes Anführungszeichen geändert habe. Es hat sich bewährt, einfache Anführungszeichen für String- und Datumskonstanten (und sonst nichts) zu verwenden.

Das geht übrigens auch mit einem 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;

Dies macht es einfacher, die individuellen Zählungen für die beiden Datenbanken zu erhalten.