我对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
使用订单,但没有用。
由于
答案 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