mySql返回不正确的结果

问题描述

| 我有一个查询
SELECT date,SUM(cimpression) AS cimp,SUM(cclick) AS cclick 
FROM stdaily 
WHERE date BETWEEN :start AND :end 
AND (id = 21 AND id = 32 AND id = 12 AND id = 33)
GROUP BY date
ORDER BY date ASC;
此查询仅需要返回ID等于21、32、12和33的结果,但返回的结果不包含那些特定ID的结果,不确定到底是什么错误?有什么建议吗?     

解决方法

我认为您正在寻找的是:
SELECT date,SUM(cimpression) AS cimp,SUM(cclick) AS cclick
FROM stdaily
WHERE date BETWEEN :start AND :end 
AND id in (21,32,12,33) 
GROUP BY date 
ORDER BY date ASC;
这将返回结果,该结果的ID与
in
括号中包含的ID相同。     ,
id = 21 AND id = 32 AND id = 12 AND id = 33 
应该
id = 21 OR id = 32 OR id = 12 OR id = 33 
    ,您没有指定他应该在哪里检查那些ID,并且传递ID的方式也是错误的
WHERE date BETWEEN :start AND :end AND (id = 21 AND id = 32 AND id = 12 AND id = 33 )
应该是这样的:
SELECT date,SUM(cclick) AS cclick 
FROM stdaily 
WHERE date BETWEEN :start AND :end AND id IN (21,33 ) 
GROUP BY date 
ORDER BY date ASC
    ,我不知道您的数据的结构,但我很惊讶这会返回任何结果。 id如何同时为21和32?例如,如果我使用
SELECT * FROM users WHERE 1=1 AND (id = 10 AND id = 11);
即使有ID为10和11的用户,我也不会得到结果。 您应该使用OR或更好的IN(21,33)     ,您的查询不正确,因为ID不能同时包含所有这些值:
id = 21 AND id = 32 AND id = 12 AND id = 33 
先前的条件失败,结果为NULL。 尝试这个:
id = 21 OR id = 32 OR id = 12 OR id = 33 
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...