SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.10.2012 13:43:54

skeef
Участник
Зарегистрирован: 29.01.2009
Сообщений: 17

Почему так работает?

Всем привет

Есть такая таблица:


CREATE TABLE `reftable` (
  `id` smallint(6) NOT NULL AUTO_INCREMENT,
  `a` varchar(4) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
)
INSERT INTO `reftable` VALUES
('1','8'),
('2', '11'),
('3','13'),
('4','15'),
('5', '17'),
('6', '20'),
('7', '100');
 


Парни, объясните мне пожалуйста, почему запрос:

SELECT `a`
FROM `reftable`
WHERE `a` > 10
LIMIT 1
 

Выдает 11,
а запрос

SELECT `a`
FROM `reftable`
WHERE `a` > 10
ORDER BY `a`
LIMIT 1
 

Выдает 100

Уже всю голову сломал! sad

Неактивен

 

#2 04.10.2012 13:52:29

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Почему так работает?

Потому, что `a` у вас строка, а не число. Выполните

SELECT `a`
FROM `reftable`
WHERE `a` > 10 order by `a`;


Что касается первого запроса, то в отсутствие сортировки limit 1 выдаст произвольный результат.

Неактивен

 

#3 04.10.2012 14:50:20

skeef
Участник
Зарегистрирован: 29.01.2009
Сообщений: 17

Re: Почему так работает?

Все правильно .... строка ... надо высыпаться.
Спасибо огромное smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson