Mysql необходимо выбрать все значения, имеющие наибольшее количество множественных записей

#mysql

#mysql

Вопрос:

Мой запрос mysql

 SELECT  count(ICD10) as columnDis, ICD10
FROM(
     SELECT tbl_disease.ICD10, tbl_symptom_disease.symptomCode 
     FROM `tbl_disease`
     JOIN tbl_symptom_disease
     ON tbl_disease.ICD10=tbl_symptom_disease.diseaseCode
     WHERE tbl_symptom_disease.symptomCode='P18' 
     OR tbl_symptom_disease.symptomCode='P19'
    ) AS tbl_ICD10_symCode
GROUP BY ICD10
HAVING columnDis=?????
  

Таким образом, этот запрос возвращает все записи ICD10, имеющие повторяющиеся значения, равные ????? .

В этом примере максимальное количество дубликатов равно 2, но я хочу использовать его для разных кодов символов, и в этом случае может быть 3 повторяющихся записи, которые появляются 5 раз, 5 других, которые появляются 3 раза, 1, который появляется 2 раза и так далее. Итак, мне нужны только повторяющиеся записи, которые появляются ЧАЩЕ всего. Что-то вроде:

 HAVING columnDis=(MAX(columnDis))
  

но это, конечно, не работает. Кто-нибудь может мне помочь, пожалуйста?

Ответ №1:

Использование подзапроса для получения максимального количества, а затем объединение его с основным подзапросом

 SELECT ICD10
FROM
(
    SELECT MAX(disease_count) AS max_disease_count
    FROM
    (
        SELECT tbl_disease.ICD10, COUNT(tbl_disease.ICD10) AS disease_count
        FROM `tbl_disease`
        JOIN tbl_symptom_disease
        ON tbl_disease.ICD10=tbl_symptom_disease.diseaseCode
        WHERE tbl_symptom_disease.symptomCode='P18' 
        OR tbl_symptom_disease.symptomCode='P19'
        GROUP BY ICD10
    ) sub0
) sub1
INNER JOIN
(
    SELECT tbl_disease.ICD10, COUNT(tbl_disease.ICD10) AS disease_count
    FROM `tbl_disease`
    JOIN tbl_symptom_disease
    ON tbl_disease.ICD10=tbl_symptom_disease.diseaseCode
    WHERE tbl_symptom_disease.symptomCode='P18' 
    OR tbl_symptom_disease.symptomCode='P19'
    GROUP BY ICD10
) sub2
ON sub1.max_disease_count = disease_count
  

Комментарии:

1. уууууу. Спасибо, приятель. Это немного сложнее, чем я хотел (потому что я использую yii), но работает отлично. Спасибо 🙂