带范围的MySQL查询

带范围的MySQL查询,mysql,sql,Mysql,Sql,我试图将一组查询简化为一个查询,但我正在努力解决这个问题 我想收集不同范围的计数,我现在正在这样做: select count(*) from items where value < 0 and id = 43; select count(*) from items where (value >= 0 AND value <= 10) and id = 43; select count(*) from items where (value > 10 AND value

我试图将一组查询简化为一个查询,但我正在努力解决这个问题

我想收集不同范围的计数,我现在正在这样做:

select count(*) from items where value < 0 and id = 43;

select count(*) from items where (value >= 0 AND value <= 10) and id = 43;

select count(*) from items where (value > 10 AND value <= 20) and id = 43;

select count(*) from items where (value > 20 AND value <= 30) and id = 43;

select count(*) from items where value > 30 and id = 43;
从值<0且id=43的项目中选择计数(*);
从项目中选择计数(*),其中(值>=0,值10,值20,值30,id=43;
我希望能够在一个查询中实现这一点。我如何才能实现这一点


此外,我还需要每个查询仍然计数,而不仅仅是它们的总数。

可能是这样的:

SELECT 
    SUM(CASE WHEN value < 0 and id = 43 THEN 1 ELSE 0 END) AS c1
    SUM(CASE WHEN (value >= 0 AND value <= 10) and id = 43 THEN 1 ELSE 0 END) AS c2,
    SUM(CASE WHEN (value > 10 AND value <= 20) and id = 43 THEN 1 ELSE 0 END) AS c3,
    SUM(CASE WHEN (value > 20 AND value <= 30) and id = 43 THEN 1 ELSE 0 END) AS c4,
    SUM(CASE WHEN value > 30 and id = 43 THEN 1 ELSE 0 END) AS c5
FROM 
    items
选择
总和(当值<0且id=43时,则为1,否则为0结束)为c1
求和(当(值>=0,值10,值20,值30,id=43,则1,否则0结束)为c5
从…起
项目
选择
总和(如果(值<0,1,0)),
总和(如果(值介于0和10之间,1,0)),
总和(如果(值介于10和20之间,1,0)),
总和(如果(值介于20和30之间,1,0)),
总和(如果(值>30,1,0))
从项目
其中id=43;
试试这个

SELECT
    SUM( IF(value < 0, 1, 0) ),
    SUM( IF(value BETWEEN 0 AND 10, 1, 0) ),
    SUM( IF(value BETWEEN 10 AND 20, 1, 0) ),
    SUM( IF(value BETWEEN 20 AND 30, 1, 0) ),
    SUM( IF(value > 30, 1, 0) )
FROM items
WHERE id = 43;