2015-03-13 122 views
0

当我尝试使用mysql命令行调用此过程时,它有以下简单的存储过程,它始终以升序返回结果。SQL存储过程顺序问题

DELIMITER // 
CREATE PROCEDURE `activity_pagin_desc`(
    IN `payload_context_id` VARCHAR(50), 
    IN `tenant_domain` VARCHAR(100), 
    IN `order_val` VARCHAR(50), 
    IN `lim_val` INT, 
    IN `lim_offset` INT 
) 
BEGIN 
    SELECT * 
    FROM SOCIAL_COMMENTS 
    WHERE payload_context_id=payload_context_id AND tenant_domain=tenant_domain 
    ORDER BY order_val DESC 
    LIMIT lim_val OFFSET lim_offset; 
END 
// 

我在做什么错在这里。

+0

你是说'ASC'和'DESC'以相同的顺序返回查询? – bwegs 2015-03-13 15:54:08

+0

@bwegs正确.. – udarakr 2015-03-13 15:57:06

回答

3

这是因为order_val是一个常数。所以,上升或下降并不重要。您可以使用动态SQL或多个case声明:

order by (case when order_val = 'col1' then col1 end), 
     (case when order_val = 'col2' then col2 end), 
     . . . 

的多个case语句是有用的,因为逻辑将不论不同类型的被引用的列的工作。