Case或If mysql中where子句中的条件生成sql语法中的#1064错误

时间:2018-06-18 06:04:16

标签: mysql

我的mysql查询是:

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

我甚至尝试过

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

生成相同的#1064 synatx错误

1 个答案:

答案 0 :(得分:0)

你不能使用这样的CASE表达式,但你可以按如下方式改写你的逻辑:

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

Demo