Recupere o numero de linhas em duas tabelas utilizando apenas uma query

 

Existem diversas maneiras para contar de forma simples o numero de linhas em duas tabelas usando uma única query:
 
Opção 1:

select ( select count(*) from Table1 )
     + ( select count(*) from Table2 )
        as total_rows
 from my_one_row_table

Opção 2:

 select sum(rows)
          as total_rows
  from (
    select count(*) as rows
      from Table1
    union all
    select count(*) as rows
      from Table2
       ) as u

O uso da cláusula UNION ALL é necessário aqui para evitar que quando as tabelas tenham o mesmo numero de linhas, um dos contadores seja descartado (o que ocorre quando usamos o UNION). Note também que o GROUP BY é necessário na query principal porque todas as linhas (produzidas pela subquery UNION ALL) são consideradas um grupo.

Nós também poderíamos usar um CROSS JOIN:  

 

   select t1.rows + t2.rows 
          as total_rows
    from (
           select count(*) as rows
           from Table1
         ) as t1
    cross join (
            select count(*) as rows
            from Table2
               ) as t2
 
O CROSS JOIN funciona porque cada tabela derivada tem somente uma linha.