Задавайте вопросы, мы ответим
Вы не зашли.
Приветствую, Всех!!!
Имеется некий вопрос?
Как правильно пользоваться конструкциями if и Exists ?
Всю сеть перерыл, нашёл множество примеров, но так ни один и не заработал. К примеру:
IF EXISTS (SELECT userID FROM users WHERE userid=1) THEN
SELECT * FROM users WHERE userid=1;
SELECT COUNT(*) into @c FROM users WHERE userid=1;
IF @c > 0 THEN
SELECT * FROM users WHERE userid=1;
КАК ПРПАВИЛЬНО ПОЛЬЗОВАТЬСЯ ИМИ????
У меня MySql 4
Неактивен
Конструкция if имеет следующий синтаксис:
IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF
Применяется в хранимых процедурах и функциях. Верно для MySQL 5.1
Пример использования:
mysql> delimiter // mysql> create procedure qqq(IN id_in int) -> if exists (select id from world.count where id=id_in) -> then select * from world.count where id=id_in; -> end if;// Query OK, 0 rows affected (0.00 sec) mysql> call qqq(13)// +------+----------------------+ | id | name | +------+----------------------+ | 13 | BOBR | +------+----------------------+ 1 row in set (0.00 sec)
Для MySQL 4 IF EXISTS применяется в выражениях создания/удаления таблиц/баз данных. Например:
mysql> drop table IF EXISTS no_such_table; Query OK, 0 rows affected, 1 warning (0.00 sec)
Неактивен
Спасибо! буду знать, придётся ставить 5-ю
Неактивен
Кстати, во такой вопрос:
Вот, элементарные2 строки::::
set @q=1;
if @q=1 then
select count(*) from users where userid=1;
// и так даже пробовал if @q==1 then...
// и end if вконце вставлял
Ну где ошибка, в каком месте, знаю только, что где-то в if. Почему не выполняется???
Неактивен
IF .. END IF; может использоваться только в хранимых процедурах и функциях. Пришлите пожалуйста код процедуры целиком.
Есть еще другой вид IF, который является функцией языка и может использоваться в запросах. Имеет 3 аргумента - условие, значение в случае истинности условия и значение в случае ложности условия.
SELECT IF(2>3,"Fantastic','Thats real');
Также существует функция EXISTS, которая может использоваться с подзапросами. Возвращает истину, если подзапрос возвращает хотя бы одну строку.
SELECT name FROM country c WHERE EXISTS(select * from language where country=c.id)
Вернет все страны, для которых если соответствующая запись в таблице language (хотя бы одна)
За подробностями советую обратиться к следующим разделам мануала
http://dev.mysql.com/doc/refman/5.1/en/ … eries.html
http://dev.mysql.com/doc/refman/5.1/en/ … ement.html
http://dev.mysql.com/doc/refman/5.1/en/ … tions.html
Неактивен
Спасибо за ответ!
И попутно появился новый: какими средствами можно создавать процедуры в mysql5, т.е. какие среды для этого существуют??? а то с 4-й версией я работал с mysql control center 0.9.4
Неактивен
Рекомендую использовать MySQL Query Browser
http://mysql.com/products/tools/
Неактивен
Спасибо! Пока всё работает ))
Неактивен