在SQL中查找多个表的行数的单个查询

在SQL中查找多个表的行数的单个查询,sql,Sql,我有一个名为Test的模式,它有表a、B、C 我想在一个命令中获得每个表的计数(行) 这也将起作用: select count(*) as a_count, null as b_count, null as c_count from A union select null, count(*), null from B union select null, null, count(*) from C SELECT (SELECT COUNT(*) FROM A

我有一个名为Test的模式,它有表
a、B、C

我想在一个命令中获得每个表的
计数(行)

这也将起作用:

select count(*) as a_count, null as b_count, null as c_count from A
union
select null, count(*), null from B
union
select null, null, count(*) from C
SELECT (SELECT COUNT(*) 
          FROM A       ) AS A_count, 
       (SELECT COUNT(*) 
          FROM B       ) AS B_count, 
       (SELECT COUNT(*) 
          FROM C       ) AS C_count;
  • 这样,您将在一行(而不是
    联合的三行)中获得结果
  • 代码更少,因为您不需要所有那些
    NULL

谢谢。所有的桌子还有别的办法吗。。第二列将不命名为
B\u count
,而是特别提到表名为A、B、c。联合的列名由第一个查询确定。假设我有15个从A1到A15的表,我需要每个表的行数。。我将如何识别。。按照你的方式,我们的查询将是巨大的。这并不是一个有15个简单表选择的巨大查询。顺便说一句,表名中有数字几乎总是一个糟糕的数据库设计。也许你可以想得太多而改变它。@embert:谢谢你改进了帖子。但请只做实质性的编辑。在获得批准之前,人们需要审查您的更改。这需要审稿人的时间。让它值得一试,把次要的编辑留给那些有足够代表性的人去编辑而不需要批准。谢谢。@juergend我会留意的。有时在实质性和非实质性之间是一条很细的线(不过在这种情况下不是这样)。@embert:在这种情况下,这条线太小了。一点点的格式化太小了。如果编辑只需要几秒钟,那就太小了。@juergend注意,这一点是主观的,拼写和语法也有变化。