需求:充值表 t_recharge、消費表 t_consume,可能單邊缺失,缺失顯示 0。
SELECT r.userId,
NVL(r.recharge_money, 0) recharge_money,
NVL(r.recharge_count, 0) recharge_count,
NVL(c.consume_money, 0) consume_money,
NVL(c.consume_count, 0) consume_count
FROM t_recharge r
LEFT JOIN t_consume c ON r.userId = c.userId
UNION
SELECT c.userId,
NVL(r.recharge_money, 0), NVL(r.recharge_count, 0),
NVL(c.consume_money, 0), NVL(c.consume_count, 0)
FROM t_consume c
LEFT JOIN t_recharge r ON c.userId = r.userId
WHERE r.userId IS NULL;
UNION 確保僅存在消費記錄的用戶也被包含。或使用 FULL OUTER JOIN (Oracle 支援)。