我有一个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'
如何针对不同的值使用不同的条件?可能吗?我的情况似乎对我不起作用。
答案 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_2
和column_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运算符