mysql+查询语句中的if_如何在MySQL查询中编写IF ELSE语句

本文探讨了如何在MySQL查询中使用IF ELSE语句,包括正确的语法和常见错误示例。介绍了如何使用CASE表达式替代IF ELSE实现条件判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何在MySQL查询中编写IF ELSE语句?

像这样:

mysql_query("...(irrelevant code).. IF(action==2&&state==0){state=1}");

然后在我的数组中,我应该能够做到这一点:

$row['state']

//this should equal 1, the query should not change anything in the database,

//just the variable for returning the information

您可能要使用case表达式。

他们看起来像这样:

谢谢,您的回答似乎更容易理解,(就查询中的情况而言,但是我无法使其正常工作:" SELECT *,N.id(CASE WHEN(N.动作== 2 AND N.state == 0)然后1否则0结束)AS N.state从通知N,在P. N.userID = $ session AND N.uniqueID = P.id AND P.state = 0 AND中发布N.action = 1 ORDER BY N.date DESC"

@DylanCross看起来您可能缺少N.id和(CASE WHEN ...之间的逗号

啊,没看到,但是即使我把逗号也没用。

@DylanCross您可能还需要将AS N.state更改为AS state。

是的,我也看到了,但仍然无法正常工作。 :|

@DylanCross您得到的错误是什么?

您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以使用在== 2 AND N.state == 0附近使用正确语法的正确语法,然后1 ELSE 0 END)AS状态FROM通知N,在第1行张贴P

@DylanCross MySQL是否使用=而不是==进行比较?

是的,我刚刚更改了这些内容,并且看起来很正常,只要不返回错误,我想我现在要做的只是处理查询,因为它是我试图完成的复杂工作。感谢您对我的问题的帮助。

您必须使用SQL而不是C / PHP样式编写它

IF( action = 2 AND state = 0, 1, 0 ) AS state

用于查询

IF ( action = 2 AND state = 0 ) THEN SET state = 1

用于存储过程或函数

我无法使它与我的代码一起使用,也许我的位置错误,或其他原因:SELECT *,N.id IF(N.action = 2 AND N.state = 0,1,0)AS N.state FROM通知N,发布P WHERE N.userID = $ session AND N.uniqueID = P.id AND P.state = 0 AND N.action = 1 ORDER BY N.date DESC

您正在寻找case:

MySQL具有if语法(if(action=2 and state=0, 1, 0)),但是case更通用。

请注意,as state只是对该列进行别名。 我假设这在您的SQL查询的列列表中。

这是一个更好的答案

SELECT col1, col2, IF( action = 2 AND state = 0, 1, 0 ) AS state from tbl1;

要么

两种结果将相同。

我注意到但无法找到文档的一件事是,IF必须是列列表中的最后一个。如果是第一个,则给出错误。有人知道在文档中的哪里吗?这让我疯狂。当我发现某些东西时,我希望看到它记录下来以备将来参考

根据mySQL参考手册,这是使用if和else语句的语法:

IF search_condition THEN statement_list

[ELSEIF search_condition THEN statement_list] ...

[ELSE statement_list]

END IF

因此,关于您的查询:

x = IF((action=2)&&(state=0),1,2);

或者你可以使用

IF ((action=2)&&(state=0)) then

state = 1;

ELSE

state = 2;

END IF;

此链接中有一个很好的例子:

http://easysolutionweb.com/sql-pl-sql/how-to-use-if-and-else-in-mysql/

欢迎使用指向解决方案的链接,但请确保没有它的答案是有用的:在链接周围添加上下文,以便您的其他用户可以了解解决方案的含义和原因,然后引用您所链接的页面中最相关的部分以防目标页面不可用。只是链接的答案可能会被删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值