Mysql左连接不返回空值

标签 mysql

我有一个名为 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/

相关文章:

mysql - 查找所有具有重复列的子项

php - php页面的等待时间

MySQL加入多对多单行

mysql - 如何执行此查询

php - 如何在一个查询中使用 PDO 进行 INSERT 和 UPDATE?

mysql - 查询返回有关嵌套元素的数据

php - 带有编码输入参数的 SQL 查询在 MySQL 中返回空结果

php - PDO Bind Params 取决于它们是否存在于查询中

java - 从 MySQL 数据库获取 Java 中的 Sum(total)

MySQL 存储和检索逻辑 - 自由格式的动态数据 - 用户输入的值