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

union alle to tabel men diff nummer af kolonne

Du skal bare lave aggregeringen før 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;

Bemærk, at jeg ændrede strengafgrænseren til at være et enkelt anførselstegn i stedet for et dobbelt anførselstegn. Det er god praksis at bruge enkelte anførselstegn for streng- og datokonstanter (og intet andet).

Det kan du i øvrigt også gøre ved at bruge et 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;

Dette gør det nemmere at få de individuelle tal for de to databaser.



  1. JDBC Oracle Thin Client fejler over til anden DB

  2. Spring Boot REST · @Constraint for sletning?

  3. Java MYSQL/JDBC-forespørgsel returnerer forældede data fra cachelagret forbindelse

  4. Hvordan flettes en gruppe af poster i oracle?