对多个表中进行Select count(*)查询

问题

如何从两个不同的表(称他们为tab1tab2)中进行select count(*)查询,从而得到如下结果:

Count_1   Count_2
123       456

我尝试过这个查询:

select count(*) Count_1 from schema.tab1 union all select count(*) Count_2 from schema.tab2

但最后只得到

Count_1
123
456

回答1

SELECT  (
        SELECT COUNT(*)
        FROM   tab1
        ) AS count1,
        (
        SELECT COUNT(*)
        FROM   tab2
        ) AS count2
FROM    dual

评论

  1. 为什么你要用dual?那是什么意思?
  2. 它是一个只有一条记录的伪表。在Oracle中你不能使用不带FROM的SELECT查询。

回答2

需要补充的是,想要在SQL Server中完成同样的事情,您只需要删除(上一条回答)查询的“FROM dual”部分。

回答3

只是因为一小点不一样:

SELECT 'table_1' AS table_name, COUNT(*) FROM table_1
UNION
SELECT 'table_2' AS table_name, COUNT(*) FROM table_2
UNION
SELECT 'table_3' AS table_name, COUNT(*) FROM table_3

它返回了转置的答案(每个表一行,而不是每个表一列),否则我认为没有太大区别。我认为在性能方面,它们应该是等效的。

回答4

我只在SQL Server上试过,但你可以这么做:

select (select count(*) from table1) as count1,
  (select count(*) from table2) as count2

在SQL Server中,我得到了你想要的结果。

回答5

另一个稍微有些不同的方法:

with t1_count as (select count(*) c1 from t1),
     t2_count as (select count(*) c2 from t2)
select c1,
       c2
from   t1_count,
       t2_count
/

select c1,
       c2
from   (select count(*) c1 from t1) t1_count,
       (select count(*) c2 from t2) t2_count
/

欢迎来弦圈一起翻译StackOverflow等国外编程内容👇👇👇
翻译原文:对多个表中进行Select count(*)查询
更多数据库相关内容:数据库 - 弦圈
更多其他趣味内容:弦圈 - 找到属于你的圈子

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值