仅当patient_id不同时,如何显示mysql记录

时间:2017-05-16 15:31:40

标签: php mysql

我正在对此表进行SQL查询:

table1

正如你在这张表中看到的,我们有4条遇遇记录20的记录。但所有4点指向同一个patient_id 35.我的要求是只有当一个encounter_id指向不同的patient_id时才显示encounter_id count和patient_id(如遇遇_id 19,这指向patient_id 38和29)。我使用了以下查询:

SELECT encounter_id, count(encounter_id) as ecount, GROUP_CONCAT(patient_id), GROUP_CONCAT(id) FROM table1 group by encounter_id having ecount > 1

但它显示以下记录:

results

但它应该只显示encounter_id 19,因为它指向不同的患者。

2 个答案:

答案 0 :(得分:0)

您的查询唯一的问题是,您要抓住任何遭遇的次数,而不是distinct遇到的次数。您只需将distinct运算符添加到您的计数中,您就可以了。

SELECT encounter_id, count(encounter_id) as ecount, GROUP_CONCAT(patient_id), GROUP_CONCAT(id) FROM table1 group by encounter_id having count(distinct patient_id) > 1

答案 1 :(得分:0)

您应该将(apply gen-pdf html-black (-> gen_pdf_args vec flatten))的定义更改为仅计算不同的患者:

ecount

如果愿意,您还可以将SELECT encounter_id, COUNT(DISTINCT patient_id) AS ecount, GROUP_CONCAT(patient_id) AS patient_ids, GROUP_CONCAT(id) AS ids FROM table1 GROUP BY encounter_id HAVING ecount > 1 添加到GROUP_CONCAT,这将返回它匹配的唯一ID列表。例如

DISTINCT