SQL auf die Spalten nicht in der SELECT

Ich habe eine Tabelle mit 3 Spalten:

userid   mac_address   count

Die Einträge für eine Benutzer könnte wie folgt Aussehen:

57193   001122334455   42
57193   000C6ED211E6   15
57193   FFFFFFFFFFFF   2

Möchte ich eine Ansicht erstellen, die zeigt nur die MAC, die als "Häufig verwendet" für diesen Benutzer. Zum Beispiel, ich möchte zum filtern der MAC, die verwendet werden, <10% im Vergleich zu den am häufigsten verwendeten MAC-Adresse für die Benutzer. Außerdem möchte ich 1 Zeile pro Benutzer. Dies kann leicht erreicht werden mit einer GROUP BY -, HAVING & GROUP_CONCAT:

SELECT userid, GROUP_CONCAT(mac_address SEPARATOR ',') AS macs, count
FROM mactable
GROUP BY userid
HAVING count*10 >= MAX(count)

Und in der Tat, das Ergebnis ist wie folgt:

57193   001122334455,000C6ED211E6   42

Aber ich wirklich nicht wollen, dass die count-Spalte in meiner Ansicht. Aber wenn ich es aus der SELECT-Anweisung, bekomme ich die folgende Fehlermeldung:

#1054 - Unknown column 'count' in 'having clause'

Gibt es eine Möglichkeit, ich kann diesen Vorgang durchzuführen, ohne gezwungen zu haben, eine böse count-Spalte in meiner Ansicht? Ich weiß, ich kann wahrscheinlich tun Sie es mit inneren Abfragen, aber ich möchte vermeiden, dass aus performance-Gründen.

Ihre Hilfe ist sehr geschätzt!

InformationsquelleAutor Rapsey | 2011-07-14
Schreibe einen Kommentar