2012-06-03 230 views
0

我需要订购表格,但我不知道用户如何选择列。按优先级列表排列的MySQL

例子:

select * 
from table 
order by field1, field2, field3 

但用户可以更改的字段顺序:字段3,字段1,字段2

我想在这样的事情:

select * 
from table 
order by 
some_fuction (
field1, priority 
field2, priority 
field3, priority 
) 

我在哪里可以设置每个领域的优先级。可能吗?

感谢, 安德森

+3

是怎样的用户访问您的数据?通过脚本?如果是这样,让脚本处理它 –

回答

1

使用ifcase你可以得到一个解决方案。
你可以看一下贴在SO各种解决方案:

  1. “IF” statement in MYSQL ORDER BY?
  2. MySQL order by multiple case statements
  3. complex sql order by
  4. MySQL : Conditional ORDER BY to only one column

,并可能更多...

+0

我不喜欢用if或case,让这样的事情: SELECT * 从表 为了通过 案例ID 1时,然后FIELD1 2时,然后场2 结束 事件ID 当1然后字段1 当2然后字段2 结束 。 。 。 – user1433588

+0

@ user1433588 - 这些是MySQL级别的唯一选项。否则,在构建sql查询之前,您必须在服务器脚本级别进行决定。 –