还有一种比较笨的方法,应该也是对的。
SELECT
	uid,
	ifnull(sum(level), 0) AS level,
	ifnull(sum(mileage), 0) AS mileage,
	ifnull(sum(complaint_cnt), 0) AS complaint_cnt
FROM (
	SELECT
		*,
		NULL AS mileage,
		NULL AS complaint_cnt
	FROM
		a
	UNION
	SELECT
		b.uid,
		NULL AS level,
		b.mileage,
		NULL AS complaint_cnt
	FROM
		b
	UNION
	SELECT
		c.uid,
		NULL AS level,
		NULL AS mileage,
		c.complaint_cnt
	FROM
		c) tmp
GROUP BY
	uid