2015-07-21 39 views
-4

我有文章表MySQL的:为了通过总和

`id`, 
`article_id`, 
`stage_1_point`, 
`stage_2_point` 

我需要前10篇基于

(stage_1_point+stage_2_point), 
列表

,当我查看任何文章中,我必须表现出自己的位置。 我的问题是如何显示它的位置,而不使用顺序。

+0

您可以使用限制功能。 –

+0

我不能使用限制我必须显示所有文章 – user3311313

+0

为什么不'ORDER BY'? –

回答

1

使用ORDER BY (stage_1_point+stage_2_point) DESC

所以,它会像

SELECT `id`, 
`article_id`, 
`stage_1_point`, 
`stage_2_point` 
FROM YOUR_TABLE ORDER BY (stage_1_point+stage_2_point) DESC 
LIMIT 0,10 

UPDATE

由于OP说,他/她需要知道具体物品的位置。

SELECT * FROM (SELECT `id`, 
`article_id`, 
`stage_1_point`, 
`stage_2_point`, 
@curRank := @curRank + 1 AS rank 
FROM YOUR_TABLE, (SELECT @curRank := 0) r ORDER BY  
(stage_1_point+stage_2_point) DESC) TAB 
WHERE `article_id`=10 

上面的查询将返回行的article_id的10,这将有一列Rank它告诉物品的位置。

+0

我必须显示按日期排序的所有文章 – user3311313

+0

你还没有提到的日期栏。对 ? – Ravi

+0

是的,我没有提及 – user3311313

0

你可以试试下面的查询如下

Select 
    stage_1_point+stage_2_point as added_point, 
    columnsid, 
    article_id, 
    stage_1_point, 
    stage_2_point 
FROM tablename 
ORDER BY 1 desc 
Limit 0,10 

这将根据列一个结果数据进行排序,并只取前10个结果。

+0

没有秩序 –