我甚至不确定这是否与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中可以做到这一点。
任何人都可以帮忙吗?
答案 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语句中使用IF
或CASE
,例如
...
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