[英]MYSQL SELECT WITHIN IF Statement
这是一个如此简单的问题,但我没有在任何地方找到答案2小时。
你如何使用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;
您可以从同一查询中选择另一个字段,但可能不支持使用select查询,因为查询可以返回多个值,mysql不支持列中的行概念。
SELECT IF(`field1`>1,`field2`,`field3`) FROM TABLE1 WHERE 1
这里field1
, field2
, field3
是同一个表中的字段
这对你有帮助吗?
你在评论中暗示了这一点 ,但这里的答案都没有明确说明,所以我会:
在MySQL中,您不能在存储过程的主体之外使用IF语句 。 当文档将概念引入“ 存储程序的IF语句”时(我的重点),文档暗示了这一点。
据我所知,除了通过查询值,然后根据MySQL之外的那些值切换控制流,没有简单的方法来控制在命令行提示符或通过客户端(例如从PHP)发出的语句中的执行流程。 (即使用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
使用if的MySQL几个查询说明了一种可能与此相关的方法。
请注意,我假设这个问题是“如何使用表中的数据来引导控制流,这可能会改变数据库的其他部分?”
CASE
WHEN receiver = '$userid' THEN receiver
ELSE sender
END AS contact
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.