奇怪的mysql查询返回值

时间:2019-03-24 09:50:23

标签: mysql

我试图对满足某些条件的表列中的值求和,但我无法从mysql中找出返回的值。

我已经运行了以下脚本。

create table robot_data(name varchar(20), value float, x int, y int, z int);


insert into robot_data(name, value, x, y, z) values("temperature", 27.99, 1, 88, 0);
insert into robot_data(name, value, x, y, z) values("temperature", 27.99, 1, 88, 0);
insert into robot_data(name, value, x, y, z) values("temperature", 27.99, 1, 88, 0);
insert into robot_data(name, value, x, y, z) values("temperature", 27.99, 1, 88, 0);

insert into robot_data(name, value, x, y, z) values("humidity", 7.99, 1, 88, 0);
insert into robot_data(name, value, x, y, z) values("humidity", 7.99, 1, 88, 0);
insert into robot_data(name, value, x, y, z) values("humidity", 7.99, 1, 88, 0);
insert into robot_data(name, value, x, y, z) values("humidity", 7.99, 1, 88, 0);
insert into robot_data(name, value, x, y, z) values("humidity", 7.99, 1, 88, 0);
insert into robot_data(name, value, x, y, z) values("humidity", 7.99, 1, 88, 0);




SELECT  COUNT(temp.value) FROM 

(SELECT value, name from robot_data where name ='temperature') as temp,
(SELECT value, name from robot_data where name ='humidity') as hum;

SELECT COUNT(value) FROM robot_data;

我希望第一个和第二个选择返回相同的结果,但它们不会。第一个返回24,第二个返回10。

实际上,我要执行的操作是首先选择:

SELECT ROUND(SUM(temp.value + hum.value))...

但是我不希望任何匹配的行都返回null,因为温度值为4,湿度为6。如果能对正在发生的事情有所了解,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

第二次返回10,因为您已在表robot_data中插入10行

第一次返回24,因为您的罪孽

FROM ( ) temp, ( ) hum 

在温度为6行的子查询返回的表和湿度为6行的sunquery的返回表之间生成交叉联接,因此6x4 = 24行