MySQL IF语句即时更改值?

时间:2012-01-10 10:50:49

标签: php mysql if-statement

我甚至不确定这是否与MySQL有关,但我希望它是。

好的,所以我有这个SQL命令

SELECT * FROM table WHERE $WhereCondition ORDER BY ListStyle
  

作为ListStyle中的数据示例,我可能有

     

2000 3000 3700 3800

我希望做的是在SQL中使用某种if语句,这将允许我检查结果行中的其他字段,以便我可以在我在页面中使用它之前更改ListStyle的值订购它。

例如,我有字段a,b和c。现在,如果a和b不为空且c = 100且ListStyle = 3700,我想将ListStyle的值更改为3699,以便在打印出结果循环时,将匹配条件( a != '', b != '', c = 100 and ListStyle = 3700)的行显示在ListStyle为3700

的行上方

我不能简单地编辑数据库中的数据,即使这是一个简单的解决方案。数据必须保持不变。

我最初尝试在php中执行此操作。虽然它很容易使用if语句更改ListStyle的值,但我不知道一种简单的方法,然后实际排序我的结果,而不是将所有内容都插入到数组中然后对其进行排序。我真的不想这样做,因为这意味着重写了很多代码,这就是为什么我希望在MySQL中可以做到这一点。

任何人都可以帮忙吗?

4 个答案:

答案 0 :(得分:3)

尝试类似:

SELECT * FROM table_name WHERE $WhereCondition ORDER BY CASE 
        WHEN ( a = 0, b = 0, c = 100 and ListStyle = 3700)  THEN 1
        WHEN ( a = 10, b = 20, c = 200 and ListStyle = 3400) THEN 2
        ELSE 10
    END

答案 1 :(得分:0)

您可以在ORDER BY语句中使用IFCASE,例如

...
ORDER BY
  IF(condition1, then_value, else_value)

答案 2 :(得分:0)

这个怎么样?

SELECT a,b,c, IF($condition, 3700, 3699) AS order WHERE $whereCondition ORDER BY order

在MySQL中表达$ condition可能很乏味,但我认为这是可能的。

答案 3 :(得分:-1)

您可以使用triggers