2012-01-04 44 views
0

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

例如,可以说我有一个意见表,其中我通过查询结果排名:使用orderBy('r.comment_rating*r.comment_length')

comment_ratingcomment_length

现在我想要得到的记录包括其各自的comment_rating*comment_length计算值。

这可能吗?

编辑:另外,没有教条执行排名计算两次,如果我这样做,也使用orderBy相同的算法?

回答

2

你的意思是这样的:

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

编辑

没有使用原则,但在documentation快速浏览后,我想这将是这样的:

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

我将如何使用Doctrine做到这一点? – whamsicore 2012-01-04 16:11:03

+0

@whamsicore没有使用Doctrine,但看看我更新的答案,并让我知道它是否有效。 – 2012-01-04 16:17:58

+0

很好,谢谢! – whamsicore 2012-01-04 16:30:45

0

试试这个:

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

文档: Doctrine Query Language: Aggregate-values.

+0

是否学说进行排名计算两次,如果我这样做,也使用排序依据相同的算法? – whamsicore 2012-01-04 16:28:25

0

所有你需要做的是包括

(comment_rating*comment_length) as comment_ranking 

在SELECT字段列表中。

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

试试这个:

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