Php 带有if逻辑的SQL select语句

Php 带有if逻辑的SQL select语句,php,sql,sql-server,if-statement,Php,Sql,Sql Server,If Statement,我有一个sql查询,我想在其中添加/使用条件。 我需要检查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 = '

我有一个sql查询,我想在其中添加/使用条件。 我需要检查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'

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

如果列名称也是实际列:

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)
试试这个:

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';
试着读一下:
我认为您需要使用CASE操作符来组合公共元素,而不是重复它们。假设在
列\u name
中除了'L'和'B'之外还有其他值:

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_2
必须具有相同的值,无论
column_name
中的是什么,因此将它们分开进行测试。然后从那里缩小范围。当您熟悉逻辑时,您会意识到测试中的
是多余的。SQL查询中的冗余并不总是一件坏事,实际上可能对优化器有所帮助。将优化器计划与之进行比较,并/或运行定时测试,以查看是否存在差异。如果没有区别,那就不谈了。

谢谢,这正是我想要的