MySQL返回确定但没有结果

s_e*_*n_g 5 mysql

当我尝试在mysql工作台中运行带有子查询的select语句时,遇到没有结果的OK响应(查询成功)。我确信代码还可以,并且mysql也没有发现任何错误,但是我不知道为什么我没有得到任何答案。

这是代码

SELECT date(created_at),
    (SELECT 
            SUM(amount) AS topup_amount
        FROM
            wallet_transaction
        WHERE
            type = 'topup'
        GROUP BY DATE(created_at)),
    (SELECT 
            SUM(amount) AS admin_add_amount
        FROM
            wallet_transaction
        WHERE
            type = 'admin_add'
        GROUP BY DATE(created_at))
FROM
    wallet_transaction;
Run Code Online (Sandbox Code Playgroud)

spe*_*593 8

看起来您正在寻找这样的查询产生的结果:

SELECT DATE(wt.created_at)                                    AS dt_created 
     , IFNULL(SUM(IF(wt.type = 'topup'    , wt.amount, 0)),0) AS topup_amount
     , IFNULL(SUM(IF(wt.type = 'admin_add', wt.amount, 0)),0) AS admin_add_amount
  FROM wallet_transaction wt
 GROUP BY DATE(wt.created_at)
Run Code Online (Sandbox Code Playgroud)

原始查询有几个问题。SELECT 列表中的子查询最多只能返回一行,否则 MySQL 会抛出错误。

  • @BrianLeishman:我怀疑 MySQL 实际上抛出了一个错误,并且 OP 代码没有检查它。但这只是猜测,没有提供足够的信息来做出诊断。所以我直接跳过了调试。如果没有示例数据,也没有预期输出的样本,我只是猜测一个规范,并编写一个查询来满足该规范。 (2认同)