SELECT DISTINCT mac, ip FROM ip;
-- 只要 (mac, ip) 組合不完全相同,就不會去重
期望:mac 相同只保留第一行 ip,但 DISTINCT 作用於「所有選取欄位的組合」。
-- 取每個 mac 的第一筆 ip (任意)
SELECT mac, MIN(ip) AS ip FROM ip GROUP BY mac;
-- 或任意一行 (MySQL 允許非聚合欄位)
SELECT mac, ip FROM ip GROUP BY mac;
-- ⚠ 非 ONLY_FULL_GROUP_BY 模式下隨機取值,生產環境請明確聚合
SELECT DISTINCT a.mac, a.ip
FROM ip a JOIN ip b ON a.mac = b.mac AND a.ip != b.ip
ORDER BY a.mac;
自關聯找出同 mac 不同 ip 的組合。
SELECT mac, COUNT(DISTINCT ip) AS ip_cnt FROM ip GROUP BY mac;
DISTINCT = 對整行去重。GROUP BY col = 按 col 分組,配合聚合函數取代表值。ONLY_FULL_GROUP_BY) 下,SELECT 列必須在 GROUP BY 或聚合函數中。