具有相关查询的MySQL Having子句不起作用

Lil*_*ilo 5 mysql sql mysql-error-1064

我的条款有问题.我想比较具有相同Bid但具有不同sens字段的两个sum我得到此输出:

SELECT v.bid 
FROM   v1 v 
WHERE  sens = 'c' 
GROUP  BY bid 
HAVING Sum(mont) < (SELECT Sum(l.mont) 
                    FROM   v1 l 
                    WHERE  sens = 'd' 
                           AND l.bid = v.bid group by l.bid); 
Run Code Online (Sandbox Code Playgroud)

ERROR 1054(42S22):字段'v.bid在字段列表中未知

编辑:V1是一个视图,我使用别名l和v试图将子查询修改为主查询

对不起伙计们,谢谢大家的答案,我有一个问题wuth原始表的列,现在它已经解决了:)

sag*_*agi 5

无需从此表中选择两个,您可以使用CASE EXPRESSION此目的:

SELECT v.bid FROM v1 v
GROUP BY v.bid
HAVING SUM(CASE WHEN v.sens = 'c' THEN v.mont ELSE 0 END) <
       SUM(CASE WHEN v.sens = 'd' THEN v.mont ELSE 0 END) 
   AND COUNT(CASE WHEN v.sens = 'c' THEN 1 END) > 0
Run Code Online (Sandbox Code Playgroud)

  • 这不应该发生:S你在表'v1`中有一个列`bid`吗?@Bili (2认同)
  • @Bili不太可能,除非你在v1表中没有bid字段. (2认同)
  • @Bili然后请发布View DDL. (2认同)