我有一个名为 users 的表,其中包含用户和各自的referralId。部分用户没有referralId并且为NULL。
我有第二个名为 transactions 的表,其中 sum(transactions.amount) 将为我提供只要 transaction_type = 1 客户产生的收入
问题:我正在进行左连接,该连接将显示每个推介 ID 产生的收入。我想要一个分组来显示没有referralIds 的用户产生的收入。但是,Null ReferralId 也返回 NULL 收入
SELECT
users.referralId, b.revenue
FROM users
LEFT JOIN
(SELECT
users.referralId, SUM(transactions.amount) AS revenue
FROM
transactions
LEFT JOIN users ON users.username = transactions.username
WHERE
transaction_type = 1 and date(created_at) between @start_date and @end_date
GROUP BY users.referralId) b ON users.referralId = b.referralId
group by referralId
最佳答案
在这种情况下,请考虑在外部查询中执行INNER JOIN
。此外,根本看不出您需要外部查询的原因。您的内部子查询应该能够获取所需的数据。
SELECT
users.referralId, b.revenue
FROM users
INNER JOIN
(SELECT
users.referralId, SUM(transactions.amount) AS revenue
FROM
transactions
LEFT JOIN users ON users.username = transactions.username
WHERE
transaction_type = 1 and date(created_at) between @start_date and @end_date
GROUP BY users.referralId) b ON users.referralId = b.referralId
group by referralId
关于Mysql左连接不返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41119514/