Php mySql返回不正确的结果

Php mySql返回不正确的结果,php,mysql,Php,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 = 21 AND id = 32 AND id = 12 AND id = 33)
GROUP BY date
ORDER BY date ASC;

此查询只需要返回id等于21、32、12和33的结果,但返回的结果不包含这些特定id,不确定到底是什么错误?有什么建议吗?

您的查询不正确,因为ID不能同时包含所有这些值:

id = 21 AND id = 32 AND id = 12 AND id = 33 
前面的条件失败,结果为空

试试这个:

id = 21 OR id = 32 OR id = 12 OR id = 33 

我想你要找的是:

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与括号中的
中包含的任何结果相同

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(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

我不知道您的数据是如何构造的,但我很惊讶这会返回任何结果。身份证怎么可能是21和32?例如,如果我使用

SELECT * FROM users WHERE 1=1 AND (id = 10 AND id = 11);
即使有ID为10和11的用户,我也不会得到结果


您应该使用或更好,在(21,32,12,33)中

我想您的意思是它没有返回“预期”结果。它正在返回“正确”的结果。