2013-05-15 153 views
-1

我有一张表;汽车mysql - count查询查询结果

汽车有许多领域:颜色,型号,崩溃,等等等等

我查询表:

从汽车选择所有地方的颜色是红色

然后我要查询结果,计算有多少人坠毁。 (坠毁现场是一个布尔值)

所以最后,我应该拥有的数据是红色汽车的各个领域,并知道X坠毁

是否有可能只做到这一点一个敲mysql的门? 还是你必须做两个单独的查询?

感谢

+1

您可以发布实际查询而不是查询伪代码。你有什么努力将两者结合成一个查询? –

回答

2

一些数据:

mysql> select * from cars; 
+-----+-------+---------+ 
| SNO | color | crashed | 
+-----+-------+---------+ 
| 1 | red |  0 | 
| 2 | red |  1 | 
| 3 | red |  1 | 
| 4 | blue |  1 | 
| 5 | blue |  1 | 
| 6 | blue |  1 | 
| 7 | blue |  0 | 
+-----+-------+---------+ 

和查询:

mysql> select color,sum(crashed),count(*) as total from cars group by color; 
+-------+--------------+-------+ 
| color | sum(crashed) | total | 
+-------+--------------+-------+ 
| blue |   3 |  4 | 
| red |   2 |  3 | 
+-------+--------------+-------+ 
2 rows in set (0.00 sec) 
+0

是的,我添加了另一个查询,你可以试试它! - >总和 - 这就是我正在寻找!谢谢 – Lan

+0

现在我的下一个问题是,我可以使用SUM来计算字符串,所以如果它说'在字段中崩溃'计数为1,如果为空计为0?谢谢 – Lan

+0

也许:'选择颜色,总和(如果(crashed_s ='crashed',1,0)), – mogul

0

你可以试试:

SELECT * FROM cars WHERE color = "red" AND crashed = TRUE 

或任何你崩溃的指标是,我只用SQL一点工作,但我相信这 查询会显示红色的所有汽车并有一个真实的坠毁值。

+0

不,看到这只是给我的红色撞车的数据 - 我想要红色车的所有数据,既崩溃也没有崩溃,并且知道有多少人已经崩溃 – Lan

+1

这个修改过的查询可能工作:'SELECT *,SUM(CASE坠毁当TRUE然后1 ELSE 0结束)从汽车WHERE颜色=“红色”GROUP BY坠毁“ – SSaaM

0

是的,你会使用WHERE子句。

SELECT * FROM cars WHERE Color = 'red' AND Crashed = true

或者,如果你想通过颜色崩溃,

SELECT color, count(*) FROM Cars WHERE crashed = true GROUP BY color;

或者,你澄清,SELECT crashed, count(*) as yourval FROM Cars WHERE color = 'Red' GROUP BY crashed

+0

不,对不起,这只是给我的红色,坠毁汽车的数据 - 我想要所有的数据红色的汽车,既坠毁也没有坠毁,也知道有多少人已经坠毁 – Lan

+0

@lan,如果你正在聚合一个计数,你不能也拥有所有的数据。如果你喜欢 – Scotch