Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql中检索指定值的计数(即使没有记录)?_Mysql - Fatal编程技术网

如何在mysql中检索指定值的计数(即使没有记录)?

如何在mysql中检索指定值的计数(即使没有记录)?,mysql,Mysql,假设我有一个表,其中有一个名为“rating”的字段,它可以接受不同的值,但我希望接收特定值的计数 例如: Create table mytable( rating int(1), ); 首先,我能想到的显而易见的方法是: select rating,count(rating) from mytable group by rating order by rating 问题是,虽然不清楚它将返回多少值,但用这种方式处理它们也可能不容易 我真正想做的是在一行中选择两个字段,显示具有特定值

假设我有一个表,其中有一个名为“rating”的字段,它可以接受不同的值,但我希望接收特定值的计数

例如:

Create table mytable(
    rating int(1),
);
首先,我能想到的显而易见的方法是:

select rating,count(rating) from mytable group by rating order by rating
问题是,虽然不清楚它将返回多少值,但用这种方式处理它们也可能不容易

我真正想做的是在一行中选择两个字段,显示具有特定值的记录数

例如

//something like this (some pseudocode):

select count(rating=-1) as rating1, count (rating=1) as rating2 from mytable

你能给我一些简洁的建议吗?

更简短的:
选择SUM(rating=-1)作为评级1,SUM(rating=1)作为mytable中的评级2
如果没有记录,我可能还会添加ifnull:
选择ifnull(SUM(rating=-1),0)作为评级1,ifnull(rating=1),0)作为mytable中的评级2
select SUM(IF(rating=-1,1,0)) AS rating1, 
   SUM(IF(rating=1,1,0)) AS rating2 from mytable