Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL SELECT IN IF语句_Sql_Mysql_If Statement - Fatal编程技术网

MYSQL SELECT IN IF语句

MYSQL SELECT IN IF语句,sql,mysql,if-statement,Sql,Mysql,If Statement,这是一个如此简单的问题,但我已经有两个小时没有找到答案了 如何使用MYSQL IF语句。不管我放了什么,它都不起作用。在SQL Server中,这是一个5秒的作业 它需要在一个程序中吗 能否在IF语句中使用SELECT 这里对IF函数不太感兴趣 谢谢您的帮助。您正在寻找案例时 如果手册中已有 我想@Nanne链接更相关。只是把它添加到这里的链接列表中 您可以从同一查询中选择另一个字段,但可能不支持使用select query 由于查询可以返回多个值,mysql不支持列中的行概念 SELECT I

这是一个如此简单的问题,但我已经有两个小时没有找到答案了

如何使用MYSQL IF语句。不管我放了什么,它都不起作用。在SQL Server中,这是一个5秒的作业

它需要在一个程序中吗

能否在IF语句中使用SELECT

这里对IF函数不太感兴趣


谢谢您的帮助。

您正在寻找
案例时

如果手册中已有


我想@Nanne链接更相关。只是把它添加到这里的链接列表中

您可以从同一查询中选择另一个字段,但可能不支持使用select query 由于查询可以返回多个值,mysql不支持列中的行概念

SELECT IF(`field1`>1,`field2`,`field3`) FROM TABLE1 WHERE 1
这里的
field1
field2
field3
是同一个表中的字段

这对你有帮助吗?

你在报告中暗示了这一点,但这里没有一个答案明确说明这一点,因此我将:

在MySQL中,不能在存储过程的主体之外使用。文档在引入“存储程序的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;

(根据)

如何使用select中的
IF
语句

select if(status>0, 'active', 'inactive') as status from users
是的,如果

例如:

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;

你在问什么?您对IF不太感兴趣,但想知道如何使用IF?如果你在两小时内没有发现任何东西,你有没有看这里@Nanne-我猜OP是在问如何在MySQL脚本中使用
。e、 g.
如果不存在(…)则创建表
。我记得以前在MySQL workbench中尝试过这样做,但一直没有弄清楚。@Martin可能是。如果
是对Google中MySQL手册的参考,则导致
的第一个结果。如果@tura给出一个用例,那就更好了。我在看if语句,而不是用于流控制的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;