#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), но работает отлично. Спасибо 🙂