2016-04-12 8 views

Antwort

0

Wenn Sie einfach die course_id mit der maximalen Anzahl von Takes erhalten möchten, können Sie die Unterabfrage nach der Anzahl sortieren und die Ergebnismenge auf einen Datensatz beschränken.

SELECT course_id, COUNT(course_id) AS count 
FROM takes 
GROUP BY course_id 
ORDER BY COUNT(course_id) DESC 
LIMIT 1 

Wenn Sie auch für den Fall, alle Kurs-ID-Werte erhalten möchten, dass es eine Bindung für die maximale Zahl von dauert, dann können Sie die folgende etwas kompliziertere Abfrage versuchen:

SELECT result.course_id 
FROM 
(
    SELECT course_id, COUNT(course_id) AS count 
    FROM takes 
    GROUP BY course_id 
) AS result 
WHERE result.count = (
    SELECT COUNT(*) 
    FROM takes 
    GROUP BY course_id 
    ORDER BY COUNT(*) DESC 
    LIMIT 1 
) 
+0

Es funktioniert wirklich. Es kann mir helfen, die Frage zu lösen. Aber ich möchte immer noch über die Verwendung von temporären Tabellen zweimal fragen. Vielleicht ist es in der Praxis nicht üblich – dapao

+0

Eine übliche Möglichkeit der Wiederverwendung einer temporären Tabelle ist ein Konstrukt namens _common Tabelle Ausdruck_ (CTE). SQL Server, Oracle und Postgres unterstützen alle diese Funktion, aber leider unterstützt MySQL sie nicht. Möglicherweise können Sie eine temporäre Tabelle in MySQL mit Sichten oder dynamischem SQL jedoch wiederverwenden. –

Verwandte Themen