如何计算内连接查询中的列

时间:2015-03-30 06:30:55

标签: mysql sql

您好如何在内联接中为此创建查询以计算多少 id在stdtbl_detail?

例如,

在stdtbl中id是“372”,所以我想计算stdtbl_detail中有多少372

SELECT h.*, d.* from
  stdtbl h inner join stdtbl_detail d
  on h.id = d.std_dtl_id

  where
  h.loginid = '1' AND  h.stdid='013777'

所以输出就像这样

id               stdid              loginid          std_dtl_id              countexist   


372              013777                1                  372                    4       

372              013777                1                  372                    4

372              013777                1                 372                     4

372              013777                 1                 372                    4

373              013777                1                  373                    4  

373              013777                 1                  373                    4

373              013777                 1                   373                   4

373              013777                1                     373                   4

提前谢谢

这是Demo

2 个答案:

答案 0 :(得分:4)

select h.*
     , d.*
     , count(*)
from stdtbl h
inner join stdtbl_detail d on h.id = d.std_dtl_id
where h.loginid = '1'
  and  h.stdid ='013777'
group by id

那会给你一个答案。您是否需要每次id显示每个id只显示一次?

Updated SQLFiddle

修改

这个将为您准确提供您所要求的内容,以防万一您也需要

select h.*
     , d.*
from stdtbl h  
inner join (
    select std_dtl_id
         , count(*) total
    from stdtbl_detail
    group by std_dtl_id
) d on h.id = d.std_dtl_id
inner join stdtbl_detail dt on h.id = dt.std_dtl_id
where h.loginid = '1'
  and  h.stdid = '013777'

SQLFiddle

答案 1 :(得分:0)

尝试此查询

SELECT h.*, d.* , count(*) 
FROM stdtbl h 
INNER JOIN stdtbl_detail d ON h.id = d.std_dtl_id
WHERE h.loginid = '1' AND  h.stdid='013777'
GROUP BY h.id