试图使用情况下,当内部的情况下,mysql php



看看我的代码,我想实现这样的东西,当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

最新更新