Выбрать из таблицы максимальное значение из двух полей

vladlen

Новичок
Выбрать из таблицы максимальное значение из двух полей

Как одним запросом выбрать из таблицы максимальное значение из двух полей? Возможно ли это.

Сейчас выбираю таким образом, хочется большего быстродействия.
PHP:
$result1 = mysql_query("SELECT ".$gr1.", data FROM ".$table_name." WHERE data >='".$d." 00:00:00' AND data <='".$d." 23:45:00' ORDER BY ".$gr1." DESC LIMIT 1"); 
	$row1 = mysql_fetch_array ($result1);
	$ymax1=$row1[0];
	
	$result2 = mysql_query("SELECT ".$gr2.", data FROM ".$table_name." WHERE data >='".$d." 00:00:00' AND data <='".$d." 23:45:00' ORDER BY ".$gr2." DESC LIMIT 1"); 
	$row2 = mysql_fetch_array ($result2);
	$ymax2=$row2[0];
	
	if ($ymax1>$ymax2){
	$ymax=$ymax1;
	}else{
	$ymax=$ymax2;
	}
 

neko

tеam neko
> Как одним запросом выбрать из таблицы максимальное значение
> из двух полей? Возможно ли это.

делается так
select max(max) from (select max(a) from t union select max(b) from t) as x;

> Сейчас выбираю таким образом, хочется большего
> быстродействия.

ничего, что мне это читать лень?
 

Фанат

oncle terrible
Команда форума
хочется большего быстродействия
а что - текущее быстродействие неу страивает?
А какой, конкретно, хочется прирост?
а с чего ты решил, что одним запросом получится быстрее?
 

chira

Новичок
vladlen
сильного прироста ты вряд ли получишь (или вообще не получишь), но можешь попробовать:
Код:
(select gr, data from t WHERE .... order by gr DESC LIMIT 1)
union
(select gr2, data from t WHERE .... order by gr2 DESC LIMIT 1)
ORDER BY gr DESC LIMIT 1;
или
select IF(gr1>gr2,gr1,gr2) as gr, data 
from t 
WHERE .... order by gr DESC LIMIT 1)
 
Сверху