Вывод MYSQL WITHIN IF
Это такой простой вопрос, но я не нашел ответа нигде в течение 2 часов.
Как вы используете статус MYSQL IF. Независимо от того, что я вкладываю в него, это не сработает. В SQL Server это 5-секундное задание.
Нужно ли быть в рамках процедуры?
Можете ли вы использовать SELECT внутри оператора IF?
Здесь действительно не интересуется функцией IF.
Спасибо за любую помощь.
Ответы
Ответ 1
Как использовать оператор IF
в select
select if(status>0, 'active', 'inactive') as status from users
Да, вы можете использовать select
внутри IF
Пример:
select if((select count(*) from versions) > (select count(*) from groups), true, false) as value
Ответ 2
Вы можете выбрать другое поле из одного и того же запроса, но использование запроса выбора может не поддерживаться
поскольку запрос может возвращать несколько значений, mysql не поддерживает концепцию строки в столбце.
SELECT IF(`field1`>1,`field2`,`field3`) FROM TABLE1 WHERE 1
здесь field1
, field2
, field3
- поля в одной таблице
Помогает ли это вам?
Ответ 3
Нужно ли быть в рамках процедуры?
Да, вам нужно быть в процедуре для использования оператора if.
Можете ли вы использовать SELECT внутри оператора IF?
Да, вы можете:
drop procedure if exists sp;
create procedure sp () begin
if ((select 1 /*from whatever table would work*/)=1) then
select 'it works';
end if;
end;
call sp;
drop procedure sp;
Ответ 4
Вы намекали на это в comment, но ни один из ответов здесь не укажет его явно, поэтому я:
В MySQL вы не можете использовать оператор IF вне тела хранимой процедуры. Документация подразумевает это, когда она вводит понятие как "оператор IF для сохраненных программ" (мой акцент).
Насколько я могу судить, нет простого способа контролировать поток выполнения в операциях, выдаваемых в командной строке или через клиента (например, с PHP), за исключением запроса значений, затем переключения потока управления на основе этих значений вне MySQL (т.е. используя инструкцию PHP if
вместо MySQL). Я бы с удовольствием исправил это: -)
Вы можете имитировать это в каждом конкретном случае, используя другие конструкции.
Например:
IF x THEN
INSERT INTO mytable (mycol)
VALUES ('foo')
END IF
может стать
INSERT INTO mytable (mycol)
SELECT 'foo'
FROM dual
WHERE x
(согласно этот ответ)
Вы также можете создать, вызвать и затем удалить новую хранимую процедуру:
DELIMITER \\
CREATE PROCEDURE tmpfunc() BEGIN
IF x THEN
INSERT INTO mytable (mycol)
VALUES ('foo');
END IF;
END \\
DELIMITER ;
CALL tmpfunc();
DROP PROCEDURE tmpfunc;
(согласно этот ответ)
Ответ 5
вы ищете CASE WHEN
? http://dev.mysql.com/doc/refman/5.0/en/case-statement.html
IF
уже существует в руководстве http://dev.mysql.com/doc/refman/5.0/en/if-statement.html
Я думаю, ссылка @Nanne более актуальна. Просто добавьте его в список ссылок здесь. http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html
Ответ 6
http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if
<сильные > Примеры:
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
Ответ 7
MySQL несколько запросов, используя if, иллюстрирует подход, который, вероятно, имеет значение здесь.
Обратите внимание, что я предположил, что этот вопрос задает вопрос: "Как я могу использовать данные из таблицы для прямого потока управления, которые могут изменить какую-то другую часть базы данных?"
Ответ 8
CASE
WHEN receiver = '$userid' THEN receiver
ELSE sender
END AS contact