MySQL命令不使用列

时间:2012-05-14 23:12:44

标签: mysql sql-order-by

我在下面的查询是按'ProgramName'排序,使用lp.name进行排序。最高值为'Science - IN',后跟'Science - FL',但'Science - FL'不应高于另一个?我需要做一些特别的事吗?

SELECT 
    lp.name AS 'program_name'
FROM customer_order co
JOIN customer c on co.customer_id = c.id
JOIN license_program lp ON co.license_program_id = lp.id
ORDER BY 
    CASE lower(sort_direction) WHEN 'asc' THEN
        CASE lower(sort_order)
            WHEN 'programname' THEN lower(lp.name)
            ELSE (entry_date)
        END
    END ASC,
    CASE lower(sort_direction) WHEN 'desc' THEN
        CASE lower(sort_order)
            WHEN 'programname' THEN lower(lp.name)
            ELSE (entry_date)
        END
    END DESC
LIMIT start_page, page_size;

1 个答案:

答案 0 :(得分:0)

正如波希米亚人所说,你不能像这样动态排序。它是当前编写的,你基本上是告诉数据库先命令升序然后再添加二级降序。您需要将动态排序逻辑编码到查询或表中,并按顺序引用它。