Mysql 如何计算不同的行数

Mysql 如何计算不同的行数,mysql,Mysql,只有当('4,5,8,10,11,15')中的的每个id都有日期戳='2012-11-07'时,此代码才有效,但如何仅统计拥有它的id 例如,上面的代码返回NULL,因为在2012-11-07年只有15行,但我需要它不去注意其他行,而是返回所有的行,我不完全清楚你在问什么,但如果你只是想知道有多少行符合你的搜索条件,我会尝试撒谎: SELECT HOUR (`Timestamp`) AS HOUR, COUNT(*) AS Alarms FROM `alarms` WH

只有当('4,5,8,10,11,15')中的
的每个id都有
日期戳='2012-11-07'
时,此代码才有效,但如何仅统计拥有它的id


例如,上面的代码返回
NULL
,因为在2012-11-07年只有15行,但我需要它不去注意其他行,而是返回所有的行,我不完全清楚你在问什么,但如果你只是想知道有多少行符合你的搜索条件,我会尝试撒谎:

SELECT
    HOUR (`Timestamp`) AS HOUR,
    COUNT(*) AS Alarms

FROM
    `alarms`
WHERE
    `Siteindex` IN ('4, 5, 8, 10, 11, 15')
AND `Datestamp` = '2012-11-07'
GROUP BY
    HOUR (`Timestamp`);

您的
where
子句很可能就是问题所在

SELECT COUNT(*)
FROM alarms
WHERE Siteindex IN ('4,5,8,10,11,15') AND Datestamp = '2012-11-07';
根据
siteindex
的类型,您应该将其更改为

WHERE `Siteindex` IN ('4, 5, 8, 10, 11, 15')

试试这个

WHERE `Siteindex` IN ('4', '5', '8', '10', '11', '15')

这将只计算你拥有的ID。

我想你需要更好地解释这个问题-我不明白你在问什么。@WillA我需要获取('4,5,8,10,11,15')中包含
Siteindex且日期戳为'2012-11-07'的所有现有行。
,,但它仅在所有Siteindex都存在且当前日期为的情况下返回。您的表定义了什么?您是否有
时间戳
日期戳
?@OlafDietsche time和dateYes,但它返回NULL,因为只有
Siteindex=15和'datestamp'=2012-11-07'的行
抱歉,语法错误。删除列名周围的单引号。我更新了我的答案。你希望得到什么结果?
WHERE `Siteindex` IN ('4', '5', '8', '10', '11', '15')
      SELECT  HOUR (`Timestamp`) AS HOUR,

  COUNT(Siteindex) AS Al

 FROM ( SELECT Siteindex FROM alarms WHERE `Siteindex` IN (4, 5, 8, 10, 11, 15))
`alarms`
 WHERE
  `Datestamp` = '2012-11-07'
GROUP BY
HOUR ;