如何在mysql中将所有行结果计为1?

时间:2012-07-10 07:30:32

标签: mysql database count

我有两张桌子。包含患者和医院的领域的“tbl_a”,以及作为咨询的“tbl_b”。 现在我的问题是只对“tbl_b”中有4条记录的患者进行计数,这样如果患者在“tbl_b”中有4条记录,则计为1。 我希望这个结果只使用mysql coz,我需要在事件调度程序中运行。 总之,我想统计在每家医院都有4次咨询的所有患者。有人可以帮我吗?

4 个答案:

答案 0 :(得分:1)

使用此解决方案:

SELECT patient
FROM tbl_b
GROUP BY patient
HAVING COUNT(1) >= 4

如果您只是希望 完全 四次咨询而不是四次或更多次的患者,请将>=更改为=

也许你想要那些有四次或更多次咨询的患者的 计算 ......在这种情况下你可以将上面的内容包裹起来{ {1}}并计算行数:

SELECT

答案 1 :(得分:1)

假设患者和患者的咨询由patient_id加入

SELECT * FROM patients
JOIN (SELECT IF(COUNT(patient_id) = 4, patient_id, NULL) AS con 
    FROM consultation 
    GROUP BY patient_id) AS con 
        ON con.patient_id = patients.patient_id
GROUP BY patient_id

联合表只能获得4个协商的数字,其他所有数据都是NULL,因此案例中的连接子句将导致患者的记录总共只有4个

希望这会有所帮助

答案 2 :(得分:0)

试试这个::

Select *, count(1) 
from table_a a 
inner join table_b b 
inner join on (a.patient_id=b.patient_id) 
group by b.patient_id having count(1) =4 

答案 3 :(得分:0)

试试这个

 SELECT 
         COUNT(consultation )/4 AS Patient_Number 
 FROM 
         tbl_b

 GROUP BY 
         consultation 
 HAVING
         (COUNT(consultation ) % 4) = 0