看看我的代码,我想实现这样的东西,当cat='1'然后CASE或当cat='2',然后CASE。帮助,感谢。
<?php
$test ="SELECT DISTINCT dis from $table WHERE
(
CASE When cat='1' THEN (CASE
WHEN val2 ='g' THEN val1 > %d
WHEN val2 ='l' THEN val1 < %d
ELSE val1 !=%d END)
When cat='2' THEN (CASE
WHEN val2 ='g' THEN val1 > %d
WHEN val2 ='l' THEN val1 < %d
ELSE val1 !=%d END)
ELSE END
)
AND dis IN ('19','20','21')
";
?>
在一个CASE
语句中尝试一下,看看它是否返回预期的结果:
<?php
$test ="SELECT DISTINCT dis from $table
WHERE CASE
WHEN cat='1' AND val2 ='g' THEN val1 > %d
WHEN cat='1' AND val2 ='l' THEN val1 < %d
WHEN cat='1' THEN val1 !=%d
WHEN cat='2' AND val2 ='g' THEN val1 > %d
WHEN cat='2' AND val2 ='l' THEN val1 < %d
WHEN cat='2' THEN val1 !=%d
END
AND dis IN ('19','20','21')
";
?>
同样,它看起来没有任何区别取决于是否cat = 1 or 2
,所以你可能会减少CASE
为:
CASE
WHEN cat in ('1','2') AND val2 ='g' THEN val1 > %d
WHEN cat in ('1','2') AND val2 ='l' THEN val1 < %d
WHEN cat in ('1','2') THEN val1 !=%d
END