简体   繁体   English

mysql中where子句的大小写或If条件导致SQL语法中的#1064错误

[英]Case or If condition in where clause in mysql generatres the #1064 error in sql syntax

My mysql query is: 我的mysql查询是:

SET @PID = 0
SELECT * FROM ProductMaster 
WHERE
CASE WHEN @PID = 0 THEN ID = ID ELSE ID = @PID END;

I even tried 我什至试过

SET @PID = 0
SELECT * FROM ProductMaster 
WHERE
IF(@PID=0, ID=ID, ID=@PID);

generates same #1064 synatx error 产生相同的#1064 synatx错误

You can't use a CASE expression like that, but you may rephrase your logic as follows: 您不能使用这样的CASE表达式,但是您可以重新定义逻辑,如下所示:

SELECT *
FROM ProductMaster
WHERE
    @PID = 0 OR ID = @PID;

Demo 演示版

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM