这是一个非常简单的问题,但我已经花了两个小时找不到答案。
如何使用MYSQL IF语句。无论我放什么都不起作用。在SQL Server中,这是一个5秒钟的工作。
它需要在一个过程中吗?
你可以在IF语句中使用SELECT吗?
我对IF函数没有真正的兴趣。
感谢任何帮助。
这是一个非常简单的问题,但我已经花了两个小时找不到答案。
如何使用MYSQL IF语句。无论我放什么都不起作用。在SQL Server中,这是一个5秒钟的工作。
它需要在一个过程中吗?
你可以在IF语句中使用SELECT吗?
我对IF函数没有真正的兴趣。
感谢任何帮助。
如何在SELECT语句中使用IF语句
select if(status>0, 'active', 'inactive') as status from users
是的,您可以在 IF
中使用 select
示例:
select if((select count(*) from versions) > (select count(*) from groups), true, false) as value
需要在过程中吗?
是的,您需要在过程中使用if语句。
可以在IF语句中使用SELECT吗?
是的,您可以使用:
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;
你在评论中暗示了它,但是这里没有任何答案明确说明它,所以我来说一下:
在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;
你正在寻找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
CASE
WHEN receiver = '$userid' THEN receiver
ELSE sender
END AS contact
IF
。例如,IF NOT EXISTS(...) CREATE TABLE
。我记得以前在MySQL Workbench中尝试过这样做,但从未弄清楚。 - Martin SmithIF
的第一个结果是MySQL手册的参考。如果@tura提供一个使用案例会更好。 - Nishant