我有一个包含 3 列的表:
userid mac_address count
一个用户的条目可能如下所示:
57193 001122334455 42
57193 000C6ED211E6 15
57193 FFFFFFFFFFFF 2
我想创建一个视图,只显示那些被认为是该用户“常用”的 MAC。例如,与该用户最常用的 MAC 地址相比,我想过滤掉使用 <10% 的 MAC。此外,我希望每个用户 1 行。这可以通过 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)
事实上,结果如下:
57193 001122334455,000C6ED211E6 42
但是,我真的不希望在我看来计数列。但是,如果我将其从 SELECT 语句中取出,则会出现以下错误:
#1054 - Unknown column 'count' in 'having clause'
有什么方法可以执行此操作而不会被迫在我看来有一个讨厌的计数列?我知道我可能可以使用内部查询来做到这一点,但出于性能原因,我想避免这样做。
非常感激您的帮忙!