sql >> データベース >  >> RDS >> Mysql

2つのテーブルすべてを結合しますが、列の数が異なります

    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;
    

    文字列の区切り文字を二重引用符ではなく一重引用符に変更したことに注意してください。文字列定数と日付定数には一重引用符を使用することをお勧めします(他には何も使用しません)。

    ちなみに、これは結合を使用して行うこともできます:

    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;
    

    これにより、2つのデータベースの個々のカウントを簡単に取得できます。



    1. 一部の列値が他のテーブルに存在する外部キー制約

    2. PostgreSQL一時テーブル

    3. Java文字列配列を使用したMysqlストアドプロシージャ

    4. MySQLに存在しない場合のcreateprocedureの言い方