有没有办法将Mysql orderBy排名作为结果记录的一部分返回?
例如,假设我有一个评论表,我在那里查询排名依据:
comment_rating
和comment_length
,使用orderBy('r.comment_rating*r.comment_length')
。
现在我希望结果记录包含各自comment_rating*comment_length
计算的值。
这可能吗?
编辑:另外,如果我这样做,并且对orderBy也使用相同的算法,那么doctrine会执行两次排名计算吗?
答案 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 ...
答案 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;