今天有個需求是 mysql多張表合並一張表查詢出該表有多少個userid(去重)。
首先我的思路是,把多張表采用union合並成一張表,然后進行group by, 最后進行sum(userid), 得出數量。
select COUNT(DISTINCT(`user_id`))
FROM ( select user_id from log_20160706 union select user_id from log_20160707 union SELECT user_id from log_20160708 UNION SELECT user_id from log_20160709 UNION SELECT user_id from log_20160710 UNION SELECT user_id from log_20160711 UNION SELECT user_id from log_20160712 order by user_id
) as TB // 這里as一定要擴在整段select外面
可以使用,不過如果表數據量大的話,花費時間還是蠻長的。
后來想想還有一種思路,我可以腳本從每張表讀出來,統計出每張表的玩家,然后進行去重(unique)一下。