【问题标题】:Write count query for a query which has multiple joins为具有多个连接的查询编写计数查询
【发布时间】:2020-04-05 20:37:00
【问题描述】:

对于 Spring JPA,我使用下面的原生查询,我需要实现分页。为此,我需要有一个计数查询,它将返回以下查询返回的行。如何编写计数查询。

SELECT  count(distinct opportunity_vendors.opportunity_id) as oppcount, vendors.name , count(applications.id) as appcount
FROM public.vendors 
  inner join public.opportunity_vendors on vendors.id = opportunity_vendors.vendor_id
  inner join public.opportunities on opportunity_vendors.opportunity_id = opportunities.id
  inner join public.applications on opportunity_vendors.opportunity_id = applications.opportunity_id
  group by vendors.name having length(vendors.name) > 0;```

【问题讨论】:

    标签: mysql sql postgresql spring-data-jpa


    【解决方案1】:

    你可以这样做:

    select count(*) from (
    SELECT  count(distinct opportunity_vendors.opportunity_id) as oppcount, vendors.name , count(applications.id) as appcount
    FROM public.vendors 
      inner join public.opportunity_vendors on vendors.id = opportunity_vendors.vendor_id
      inner join public.opportunities on opportunity_vendors.opportunity_id = opportunities.id
      inner join public.applications on opportunity_vendors.opportunity_id = applications.opportunity_id
      group by vendors.name having length(vendors.name) > 0
    ) d
    

    最好的问候,
    比亚尼

    【讨论】:

      【解决方案2】:

      您可以将查询用作子查询.. 一个简单的方法是

      select count(*) 
      from (
      
          SELECT  count(distinct opportunity_vendors.opportunity_id) as oppcount
              , vendors.name 
              , count(applications.id) as appcount
          FROM public.vendors 
            inner join public.opportunity_vendors on vendors.id = opportunity_vendors.vendor_id
            inner join public.opportunities on opportunity_vendors.opportunity_id = opportunities.id
            inner join public.applications on opportunity_vendors.opportunity_id = applications.opportunity_id
            group by vendors.name 
            having length(vendors.name) > 0; 
      
      ) t 
      

      【讨论】:

        猜你喜欢
        • 2018-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-16
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多