IF语句中的MYSQL SELECT

时间:2011-01-23 16:17:46

标签: sql mysql if-statement

这是一个如此简单的问题,但我没有在任何地方找到答案2个小时。

如何使用MYSQL IF语句。无论我放入什么都行不通。在SQL Server中,这是一个5秒的工作。

是否需要在程序中?

你能在IF语句中使用SELECT吗?

这里对IF功能不​​感兴趣。

感谢您的帮助。

7 个答案:

答案 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

此处field1field2field3是同一个表格中的字段

这对你有帮助吗?

答案 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 WHENhttp://dev.mysql.com/doc/refman/5.0/en/case-statement.html

手册http://dev.mysql.com/doc/refman/5.0/en/if-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说明了一种可能与此相关的方法。

请注意,我假设这个问题是“如何使用表中的数据来引导控制流,这可能会改变数据库的其他部分?”