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)中我想您的意思是它没有返回“预期”结果。它正在返回“正确”的结果。