MYSQL:在两列上排序

时间:2014-05-24 06:59:06

标签: sorting

我对MYSQL有点新意。我想根据用户选择在两列上对数据集(SQL输出)结果进行排序。

在我的表格中,我有以下两个与处理费用相关的栏目:

1:  Proc_Percentage  - Float

2:  Proc_Fees.       - Float

每行的值为一列的EITHER。

For example 1% or 2345 $. 

Another example 1.5% or 678 $ like that. 

示例数据:

Row 1:  1%     NULL

Row 2:  NULL   2345

Row 3:  1.5%   NULL

Row 4:  NULL   678

Row 5:  0.5%   NULL

Row 6:  NULL   1234

*请注意,上述行中没有一行包含列

的值

在前端,我有一个DROP DOWN,用户可以根据他的喜好对结果进行排序,例如按 Proc Percentage Proc Fees 排序。

但是,结果只能在一列下显示标题:" Proc Charges "。

因此,如果用户选择按Proc_Percentages排序,我希望按以下顺序显示结果。

根据百分比排序时的结果示例

Proc Charges


1: 0.5%

2: 1.0% 

3: 1.5%*

4: 2345

5: 1234

6: 678

此处仅有1到3个事项的顺序(PERCENTAGE排序)。第4行到第6行可以按任何顺序排列。

另一方面,如果用户选择按Proc_Fees排序,我想按以下顺序显示结果。

根据百分比排序时的结果示例

Proc Charges


1: 678

2: 1234 

3: 2345*

4: 1%

5: 1.5%

6: 0.5%

这里只有1到3个事项的顺序(FEES排序)。第4行到第6行可以按任何顺序排列。

有人可以解释我如何实现这一目标?我尝试按perd desc, fees asc使用订单,但没有用。

由于

2 个答案:

答案 0 :(得分:1)

像这样的东西

对于Proc_Percentage

SELECT * FROM 
TableName 
Order By CASE WHEN LOCATE('%',ColumnName)>0 Then 1 Else 999999; 

对于Proc_Fees

SELECT * FROM 
TableName 
Order By CASE WHEN LOCATE('%',ColumnName)>0 Then 999999 Else 1;

答案 1 :(得分:0)

试试这个

order by ifnull($selected_column, 999999) asc