查询两个表中获得最大的价值MySQL的

我需要在四分型动物在两个表中的最大值和显示。 Celsius |嗯| fecha_temp | fecha_hum查询两个表中获得最大的价值MySQL的

Table: temperaturas 

Columns:

id_temp int(11) AI PK

celsius_temp decimal(10,0)

fah_temp decimal(10,0)

fecha_temp datetime

Table: humedad

Columns:

id_hum int(11) AI PK

hum_hum float

fecha_hum datetime

我尝试这个查询,但不工作

select t.celsius_temp as celsius, h.hum_hum, t.fecha_temp, h.fecha_hum from 

temperaturas t

inner join humedad h on h.hum_hum <=(select max(h.hum_hum) from humedad h)

where t.celsius_temp<=(select max(t.celsius_temp) from temperaturas t) and

t.fecha_temp between '2017-12-01' and '2017-12-05'

order by t.celsius_temp, h.hum_hum desc limit 1;

非常感谢

回答:

每个表的期间的最大值为:

SET @start_date = '2017-12-01'; 

SET @end_date = '2017-12-01';

SELECT MAX(t.celsius_temp) INTO @tmax FROM temperaturas t

WHERE t.fecha_temp BETWEEN @start_date AND @end_date;

SELECT MAX(h.hum_hum) INTO @hmax FROM humedad h

WHERE t.fecha_hum between @start_date AND @end_date;

你可以让他们都到一个表做:

SELECT @tmax, @hmax; 

如果你想知道在哪里达到最高温度或湿度最大值这是一个有点棘手,因为你可能有相同的值多个日期的日期。你可以这样写一个单一的查询,但我宁愿用上面的查询,然后运行:

SELECT * from temperaturas t where t.celsius_temp = @maxt; 

SELECT * from humedad h where h.hum_hum = @maxh;

请记住,这可能有多个行,如果温度在多个日期相同。没有简单明智的方式将如何将它加入到一个表中。

如果每天多次测量,并正在寻找在每一天的最高温度/湿度,那么你要使用GROUP BY功能。然后,您可以加入的时间戳的日期()函数的是这样的:

SELECT coalesce(date(t.fecha_temp), date(h.fecha_hum)), 

MAX(t.celsius_temp) as celsius,

MAX(h.hum_hum) as humibity

FROM temperaturas t

OUTER JOIN humedad h on date(t.fecha_temp) = date(h.fecha_hum)

WHERE coalesce(date(t.fecha_temp), date(h.fecha_hum))

between @start_date and @end_date

GROUP BY coalesce(date(t.fecha_temp), date(h.fecha_hum))

ORDER BY coalesce(date(t.fecha_temp), date(h.fecha_hum))

coalesce()此功能是必要的,因为你可能有只有一个表可能有数据的日期。

此连接,如果你有大量的数据,在这种情况下,你可能想看看同组函数结果创建临时表,然后加入只是每日期单列效率不高。该柱的

以上是 查询两个表中获得最大的价值MySQL的 的全部内容, 来源链接: utcz.com/qa/257867.html

回到顶部