Ich möchte alle Zeilen aus einer Tabelle auswählen, die 50 häufigste Werte der Spalte enthalten. Ich habe versucht, einen solchen Join zu verwenden, aber es scheint, dass ich LEFT JOIN falsch gewählt habe. Der innere Teil der Aussage scheint in Ordnung zu sein. Was soll ich in meiner Aussage ändern?Wählen Sie Zeilen mit den häufigsten Werten einer Spalte. MySQL
SELECT col1, col2
FROM tbl as t1
LEFT JOIN (
SELECT id
FROM tbl
WHERE id > 123
AND id < 987654
GROUP BY col1
ORDER BY COUNT(id) DESC
LIMIT 50
) AS t2
ON t1.id = t2.id
Was mit Ihrer Anfrage falsch ist? Hast du versucht, es stattdessen in einen "inneren Join" zu verwandeln? – sgeddes
Innerer Join gibt nur 50 Zeilen zurück. Das Seltsame ist, wenn ich das Limit innerhalb der inneren Auswahl auf 5 änderte, änderte sich die Anzahl der zurückgegebenen Zeilen nicht. – pedmillon
Wenn Sie den 'linken Join' verwenden, würden die Ergebnisse gleich sein, einige hätten nur eine 'Null'-ID von' t2' (wenn Sie das angezeigt hätten). Vielleicht würden Beispieldaten und erwartete Ergebnisse helfen ... – sgeddes