带有if逻辑的SQL select语句

时间:2014-07-13 09:35:07

标签: php sql sql-server if-statement

我有一个SQL查询,我想在 WHERE 中添加/使用条件。 我需要检查值exmp:

SELECT * FROM DB WHERE

IF column_name = 'L' THEN column_1 = '$php_variable1' and column_2 = '$php_variable2'

IF column_name = 'B' THEN column_1 = '$php_variable1' and column_2 = '$php_variable2' and column_3 = '$php_variable3'

如何针对不同的值使用不同的条件?可能吗?我的情况似乎对我不起作用。

3 个答案:

答案 0 :(得分:2)

前提是column_name也是实际列:

SELECT * FROM DB WHERE

(column_name = 'L' AND column_1 = '$php_variable1' and column_2 = '$php_variable2')

OR (column_name = 'B' AND column_1 = '$php_variable1' and column_2 = '$php_variable2)

答案 1 :(得分:0)

结合常用元素而不是重复它们。假设除了' L'之外还有其他值。和' B'在column_name

select  *
from    table
where   column_name in( 'L', 'B' )
    and column_1 = '$php_variable1'
    and column_2 = '$php_variable2'
    and (column_name = 'L'
        or (column_name = 'B' and column_3 = '$php_variable3'));
无论column_1中的内容如何,​​

column_2column_name必须具有相同的值,因此请将它们作为单独的测试。然后从那里缩小它。当您熟悉逻辑时,您将意识到in测试是多余的。 SQL查询中的冗余并不总是坏事,实际上可能有助于优化器。比较优化器计划与它,没有它和/或运行时序测试,看看是否有差异。如果没有差异,请继续将其删除。

答案 2 :(得分:-1)

试试这个:

SELECT * IF (column_name = 'L') FROM table WHERE column_1 =
'$php_variable1' and column_2 = '$php_variable2';

 SELECT * IF (column_name = 'B') FROM table WHERE column_1 =
'$php_variable1' and column_2 = '$php_variable2';

尝试阅读: http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html 我认为你需要使用CASE运算符