加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

两个SQL COUNT()查询?

发布时间:2021-01-13 16:06:31 所属栏目:编程 来源:网络整理
导读:我想计较表中记录的总数,以及匹配特定前提的记录总数.我可以通过两个单独的查询执行这些操纵 SELECT COUNT(*) AS TotalCount FROM MyTable;SELECT COUNT(*) AS QualifiedCount FROM MyTable {possible JOIN(s) as well e.g. JOIN MyOtherTable mot ON MyTable

我想计较表中记录的总数,以及匹配特定前提的记录总数.我可以通过两个单独的查询执行这些操纵

SELECT COUNT(*) AS TotalCount FROM MyTable;
SELECT COUNT(*) AS QualifiedCount FROM MyTable
  {possible JOIN(s) as well e.g. JOIN MyOtherTable mot ON MyTable.id=mot.id} 
  WHERE {conditions};

有没有步伐将这些组合成一个查询,以便我在一行中获得两个字段?

SELECT {something} AS TotalCount,{something else} AS QualifiedCount 
  FROM MyTable {possible JOIN(s)} WHERE {some conditions}

假如没有,我可以发出两个查询并将它们包装在一个事宜中,这样它们就是同等的,但我但愿能用一个查询.

编辑:我最体谅原子性;假若有两个子SELECT语句必要,只要有来自某个处所的INSERT,它就不会使两个相应纷歧致.

编辑2:CASE谜底是有辅佐的,但在我的详细实例中,前提也许包罗与另一个表的JOIN(忘了在我的原始帖子中提到,歉仄)以是我猜这种要领不起浸染.

办理要领

一种要领是将表插手自身:
select
   count(*) as TotalCount,count(s.id) as QualifiedCount
from
   MyTable a
left join
   MyTable s on s.id = a.id and {some conditions}

另一种要领是行使子查询:

select
   (select count(*) from Mytable) as TotalCount,(select count(*) from Mytable where {some conditions}) as QualifiedCount

可能你可以把前提放在一个案例中:

select
   count(*) as TotalCount,sum(case when {some conditions} then 1 else 0 end) as QualifiedCount
from
   MyTable

有关:

SQL Combining several SELECT results

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读