这是一个如此简单的问题,但我没有在任何地方找到答案2个小时。
如何使用MYSQL IF语句。无论我放入什么都行不通。在SQL Server中,这是一个5秒的工作。
是否需要在程序中?
你能在IF语句中使用SELECT吗?
这里对IF功能不感兴趣。
感谢您的帮助。
答案 0 :(得分:13)
如何在选择
中使用IF
语句
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
答案 1 :(得分:5)
您可以从同一查询中选择其他字段,但可能不支持使用选择查询 由于查询可以返回多个值,因此mysql不支持列中的行概念。
SELECT IF(`field1`>1,`field2`,`field3`) FROM TABLE1 WHERE 1
此处field1
,field2
,field3
是同一个表格中的字段
这对你有帮助吗?
答案 2 :(得分:5)
是否需要在程序中?
是的,您需要在程序中使用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;
答案 3 :(得分:2)
您正在寻找CASE WHEN
? http://dev.mysql.com/doc/refman/5.0/en/case-statement.html
IF
我猜@Nanne链接更相关。只需将其添加到此处的链接列表中即可。 http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html
答案 4 :(得分:2)
你在comment中暗示了它,但这里没有任何答案明确说明,所以我会:
在MySQL中,您不能在存储过程的主体外部使用IF statement。当文档将概念引入“存储程序的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
(根据this answer)
您还可以创建,调用然后删除新的存储过程:
DELIMITER \\
CREATE PROCEDURE tmpfunc() BEGIN
IF x THEN
INSERT INTO mytable (mycol)
VALUES ('foo');
END IF;
END \\
DELIMITER ;
CALL tmpfunc();
DROP PROCEDURE tmpfunc;
(根据this answer)
答案 5 :(得分:0)
CASE
WHEN receiver = '$userid' THEN receiver
ELSE sender
END AS contact
答案 6 :(得分:0)
MySQL several queries using if说明了一种可能与此相关的方法。
请注意,我假设这个问题是“如何使用表中的数据来引导控制流,这可能会改变数据库的其他部分?”