[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: конструкция CASE в SQL-запросе
maxims
Привет!

имеем таблицу
-- 
-- Структура таблицы `my_tab`
--

CREATE TABLE `my_tab` (
`id` int(2) NOT NULL auto_increment,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=21 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=21 ;

--
-- Дамп данных таблицы `my_tab`
--

INSERT INTO `my_tab` VALUES (1);
INSERT INTO `my_tab` VALUES (2);
INSERT INTO `my_tab` VALUES (3);
INSERT INTO `my_tab` VALUES (4);
INSERT INTO `my_tab` VALUES (5);
INSERT INTO `my_tab` VALUES (6);
INSERT INTO `my_tab` VALUES (7);
INSERT INTO `my_tab` VALUES (8);
INSERT INTO `my_tab` VALUES (9);
INSERT INTO `my_tab` VALUES (10);
INSERT INTO `my_tab` VALUES (11);
INSERT INTO `my_tab` VALUES (12);
INSERT INTO `my_tab` VALUES (13);
INSERT INTO `my_tab` VALUES (14);
INSERT INTO `my_tab` VALUES (15);
INSERT INTO `my_tab` VALUES (16);
INSERT INTO `my_tab` VALUES (17);
INSERT INTO `my_tab` VALUES (18);
INSERT INTO `my_tab` VALUES (19);
INSERT INTO `my_tab` VALUES (20);


подскажите как пользоваться конструкцией CASE?

пишу такой запросик
SELECT m.`id`, CASE m.`id`>10 THEN 20 ELSE 10 END AS de FROM `my_tab` m 


выдаёт ошибку

Ответ MySQL:  
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'THEN 20 ELSE 10 END AS de FROM `my_tab` m LIMIT 0, 30' at line 1




Спустя 9 минут, 48 секунд (18.03.2010 - 09:43) sergeiss написал(а):
Скорее всего, это "дефолт БД"... Открываем хэлп, смотрим, думаем...
Цитата
CASE case_value
    WHEN when_value THEN statement_list
    [WHEN when_value THEN statement_list] ...
    [ELSE statement_list]
END CASE

Or:

CASE
    WHEN search_condition THEN statement_list
    [WHEN search_condition THEN statement_list] ...
    [ELSE statement_list]
END CASE


Вопрос: а что мешало топик-стартеру просто "тупо" зайти в хэлп и почитать? Или он считает, что проще спросить на форуме??? А голова на что дана была?

Спустя 5 минут, 44 секунды (18.03.2010 - 09:49) Dezigo написал(а):

SELECT m.`id` ,CASE WHEN m.id > 10 THEN 20 ELSE 10 END AS de FROM `my_tab`



Спустя 1 час, 52 минуты, 19 секунд (18.03.2010 - 11:41) maxims написал(а):
Dezigo , пасибо.....)))))))

Спустя 4 минуты, 2 секунды (18.03.2010 - 11:46) sergeiss написал(а):
Цитата (maxims @ 18.03.2010 - 12:41)
Теорию я и так знаю!!!!

Не похоже, что ХОРОШО знаешь smile.gif

Цитата (maxims @ 18.03.2010 - 12:41)
Вот конкретный пример, составил запрос, что не так?

Потому что важное в данном случае слово WHEN пропустил. И мог бы сам его найти, если бы внимательно почитал хэлп.

Да еще и Desigo "пошел тебе навстречу", написал в явном виде то, что я подразумевал (чтоб ты сам подумал все-таки). А ты всё равно спрашиваешь "что не так".

Спустя 7 минут, 14 секунд (18.03.2010 - 11:53) maxims написал(а):
Цитата
А ты всё равно спрашиваешь "что не так".

на тот момент не увидел ответ Dezigo smile.gif

Спустя 11 месяцев, 9 дней, 23 часа, 58 минут, 49 секунд (28.02.2011 - 11:52) Гость_Olga написал(а):
javascript:ins('Dezigo')

Спасибо !!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.