MySQL:如何使用ORDER BY进行内联函数?

时间:2010-08-27 16:31:08

标签: mysql

所以,我想创建一个按流行度排序的公式,但我不想创建存储过程或函数。我希望这个功能只是在我的查询中。

那么,有没有办法做类似

的事情
SELECT cols
FROM tables
WHERE conditions
ORDER BY function(){ logic using cols } DESC LIMIT 10

或类似的东西?

1 个答案:

答案 0 :(得分:2)

  

我不想创建存储过程或函数

你想调用一个函数,但你不想定义一个函数?好...

您可以在ORDER BY子句中使用表达式,包括非常强大的CASE

SELECT cols
FROM tables
WHERE conditions
ORDER BY CASE WHEN col1 BETWEEN a AND b THEN 1 
              WHEN col1 BETWEEN c AND d THEN 2
              ...
         END
     DESC LIMIT 10

但是,通常更容易在选择列表中进行计算,然后按计算列进行排序:

SELECT cols, POW(col1, col2) AS calc1
FROM tables
WHERE conditions
ORDER BY calc1 DESC LIMIT 10