Наименьшее, больше чем A.....

  • Автор темы 2People
  • Дата начала

2People

Guest
Наименьшее, больше чем A.....

Как вывести наименьшее, большее чем заданное число одним запросом?
Пример:
Числа 1,2,4,6,9,10.
Порог 5.
Вывод 6
 

Кром

Новичок
[sql]
SELECT * FROM `table WHERE ID > $num ORDER BY ID ASC LIMIT 1
[/sql]
Где ID - столбец твоих чисел.
 

2People

Guest
Немного не так, мне надо вывести все строки, где A наименьшее больше чем B.
Пример2:

Числа: 1,2,4,4,4,4,7
Порог: 3
Вывод: 4,4,4,4
 

Crazy

Developer
bettrrr, фраза "вывести все строки, где A наименьшее больше чем B" означает, что в одной строке есть НЕСКОЛЬКО этих самых A. Ты правда это имел в виду или просто проблемы с руским изыком?
 

Саня

Guest
SELECT `field`, count(`field`) FROM `table` WHERE `field`>3 GROUP BY `field` ORDER BY `field` ASC LIMIT 1
 

Crazy

Developer
Саня, человек хочет получить 4 (четыре) строки. Какой тут может быть "LIMIT 1"?

Вообще, то, что bettrrr ХОТЕЛ спросить, делается в два запроса:

1. Определить требуемое граничное значение.
2. Выбрать все строки с этим значением.
 

chira

Новичок
если очень нужно одним запросом:
Код:
select z2.*
from mytable z1, mytable z2
where z2.kod > 3 and z1.kod > 3 
group by z2.id
having z2.kod = MIN(z1.kod);
 

Crazy

Developer
chira, ты полагаешь, что запрос с having поверх декартова произведения будет выполняться эффективно?

Все же есть ощущение, что в два запроса оно отработает быстрее...
 

2People

Guest
Видимо действительно лучше в два. Спасибо.
 

Саня

Guest
На будущее: в MySQL так бывает очень часто...
 

chira

Новичок
Crazy
я не говорил , что ето еффективный запрос.
скорее очень не еффективный.
наверно стоило бы прокоментировать его ... ну извиняйте.
удивляет усиленное стремление некоторых людей к одному запросу любой ценой.
конечно два запроса будет гораздо быстрее!
хотя есть еще зависимость от количества данных.
для не большой таблицы разница в 0.5 сек и 0.01 для конечного пользователья не очено то и важна.
 
Сверху