Перейти к содержимому

Сервис обмена электронных валют


  • Закрытая тема Тема закрыта

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

#1 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71
0

Отправлено 22 Апрель 2010 - 16:28

помогите с запросом, есть колонка(числовая) в таблице, нужно выбрать ту строку у которой это поле макимальное

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Как выделить текст в текстовом поле
  2. Удаление строк с нулевым значением
  3. Вывод строк из таблицы с максимальным значением поля
  4. Вывод значения title в поле формы
  5. Вывод информации из полей в DLE(тип полей "несколько строк")

#2 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 22 Апрель 2010 - 17:21

Если надо вытащить только максимальное значение, тогда просто:
$result = mysql_query("SELECT MAX(polls) AS 'max_polls' FROM table",$db);
$row = mysql_fetch_array($result);
echo $row['max_polls'];

А если всю строку, то ничего другого, кроме как сделать двойной запрос в голову не пришло... может меня поправят:
$result = mysql_query("SELECT MAX(polls) AS 'max_polls' FROM table",$db);
$row = mysql_fetch_array($result);

$result = mysql_query("SELECT * FROM table WHERE polls=$row[max_polls]",$db);
$row = mysql_fetch_array($result);
echo "Id строки с максимальным значением - ".$row['id']."; Еще что-то из этой же строки - ".$row['punkt']."; Само максимальное значение - ".$row['polls'];

  • 0


#3 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Апрель 2010 - 21:08

matroskin8, зачем двойной запрос? А сортировкой и лимитом не обойтись?

Поправлю:
SELECT `*` FROM `table` ORDER BY `pole` DESC LIMIT 1

Так как поле числовое, то отсортируется в обратном порядке, т.е. по убыванию. А возьмем мы только первую запись, в которой это поле MAX.
  • 0

#4 surfer

surfer
    Topic Starter
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 22 Апрель 2010 - 22:20

гениально!!! :rolleyes:
  • 0

#5 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 22 Апрель 2010 - 22:26

А есть еще такая SQL функция MAX() называется. =))

SELECT max(pole) FROM table LIMIT 1

  • 0

#6 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 22 Апрель 2010 - 22:34

gaaarfild, выше приводили, но тут подобный запрос не подходит, если только такой:
SELECT `*` FROM `table` WHERE `pole`=MAX(`pole`)

Но, думаю, ясно, что данный запрос некорректен, при одинаковых значениях pole в некоторых из строк.
  • 0

#7 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 23 Апрель 2010 - 09:50

Хотя в принципе ты абсолютно прав. =) Так как тебе нужно не максимальное значение, а вся строка, соответственно Версия Zitoss - абсолютно подходящая. моя - нет. =)
А еще, данная тема должна быть в разделе SQL
  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Апрель 2010 - 11:25

gaaarfild, спасибо
Тема перенесена в ветку "Базы данных и SQL"
Раз вопрос решен, тема закрыта.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru