Mysql:返回orderBy排名

时间:2012-01-04 16:05:02

标签: mysql doctrine

有没有办法将Mysql orderBy排名作为结果记录的一部分返回?

例如,假设我有一个评论表,我在那里查询排名依据:

comment_ratingcomment_length,使用orderBy('r.comment_rating*r.comment_length')

现在我希望结果记录包含各自comment_rating*comment_length计算的值。

这可能吗?

编辑:另外,如果我这样做,并且对orderBy也使用相同的算法,那么doctrine会执行两次排名计算吗?

5 个答案:

答案 0 :(得分:2)

你的意思是:

SELECT *, (comment_rating * comment_length) AS ranking FROM comment ORDER BY ranking DESC

修改

Haven没有使用过Doctrine,但是在快速浏览一下documentation之后,我猜它会是这样的:

$q = Doctrine_Query::create()
    ->select('*, (comment_rating * comment_length) AS ranking')
    ->from('comment')
    ->orderBy('ranking');
$comments = $q->execute();

答案 1 :(得分:1)

试试这个:

Select comment_rating, comment_length, 
       (comment_rating * comment_length) as rat_len 
From comment 
OrderBy rat_len

答案 2 :(得分:0)

试试这个:

SELECT <yourFields>, (r.comment_rating * r.comment_length) AS Rating FROM ...

<强>文档: Doctrine Query Language: Aggregate-values.

答案 3 :(得分:0)

您需要做的就是包括

(comment_rating*comment_length) as comment_ranking

在SELECT字段列表中。

答案 4 :(得分:0)

SELECT
  comment_rating,
  comment_length,
  comment_rating*comment_length AS comment_rank
FROM
  tablename
ORDER BY
  comment_rank;