【发布时间】:2012-01-02 19:57:58
【问题描述】:
问题是:“如何使用 if 值通过 sql 语句进行排序?”
我有一个表,其中有一个参数,使用此参数我必须按 ASC 或 DESC 排序单个列。我怎样才能实现它?
我知道 ASC 和 DESC 参数不能在一个 IF 块中(并且有这样的结构。“IF(Type = '1',ranking,ranking)ASC/DESC”),所以这是替代基于参数的选择中的顺序?
示例
表格是这样的:
ID | RANKING | TYPE
--------------------
1 | 12 | 1
2 | 10 | 1
3 | 14 | 2
4 | 15 | 2
Type = 1 必须是 ASC 订单,Type = 2 必须是 DESC 订单,所以我的 SELECT 的预期结果可能是:
ID | RANKING | TYPE
--------------------
2 | 10 | 1
1 | 12 | 1
4 | 15 | 2
3 | 14 | 2
有什么想法吗?
【问题讨论】:
-
你的意思是你有一个带参数的存储过程?它看起来像什么?
-
如果不存在则创建表
test(idsmallint(5) unsigned NOT NULL AUTO_INCREMENT,rankingvarchar(15) NOT NULL,typetinyint(1) unsigned NOT NULL,主键 (id) ) ENGINE=InnoDB 默认字符集=utf8 AUTO_INCREMENT=5 ;插入test(id,ranking,type) 值 (1, '12', 1), (2, '10', 1), (3, '14', 2), ( 4, '15', 2);