当我发现以下两个条件之间的冲突时,我感到震惊。
我尝试了很多方法并进行了检查,但是后来发现,只有删除了第一个条件后,WHEN
才有效。
CASE
WHEN
(@cid != '0' OR @cid != '') AND @ftm != '0' AND (@sid != '' OR @sid != '0')
THEN
cls.id = @cid AND fee_tm.id = @ftm AND sec.id = @sid
WHEN
(@cid != '0' OR @cid != '') AND @ftm != '0' AND (@sid = '0') AND
THEN
cls.id = @cid AND fee_tm.id = @ftm
END
此处@cid
与 cls.id 相关,@ftm
与 fee_time.id 相关,@sid
与 sec相关.id
要更加清晰和具体,
value `0` means All:
@cid = 0 (All classes),
@sid = 0 (All Sections),
@ftm = 0 (All fee_tm)
value '' (empty) means nothing is selected.
value != 0 and value != '' means user input.
第一个WHEN
条件适用于:
如果@cid
(class.id),@ftm
(fee_time.id),@sid
(sec.id),则它们都不是空的也不是全部
第二个WHEN
条件适用于:
如果@cid
(class.id),@ftm
(fee_time.id),则这两个都不是空的,也不是全部(与第一个条件匹配)-但区别在于:如果{{1 }}(秒ID)为0(全部)。
我试图将两个条件合并为一个条件,但无法调整。但是应该可以,不是吗?
我的 MYSQL代码 @sid
条款如下
WHERE