2011-11-07 119 views
0
ID Vote_Up Vote_Down ***DIFFERENCE*** 
1   3   1    2 
2   1   3   -2 
3   23   7    16 
4   5   1    4 
5   7   5    2 
6   2   2    0 
7   9   1    8  

如何根據Vote_Up和Vote_Down的差異對mysql中的數據進行排序而不必創建另一列來存儲它們的差異?根據兩列的差異對數據進行排序

vote_up - vote_down 

,這樣它會這樣排序:

ID Vote_Up Vote_Down ***DIFFERENCE*** 
3   23   7    16 
7   9   1    8  
4   5   1    4 
5   7   5    2 
1   3   1    2 
6   2   2    0 
2   1   3   -2 

回答

2

@Konerak: 差不在現場。 使用此SQL查詢:

SELECT * FROM table ORDER BY Vote_Up - Vote_Down DESC; 

SELECT *, Vote_Up - Vote_Down as DIFFERENCE FROM table ORDER BY DIFFERENCE DESC; 
+0

歡迎來到StackOverflow!感謝您的評論,但是**您不能在您的答案中提及他的@名,並且只能在他的問題/答案/評論中留言。你可以在這裏發表你的答案,通常在我的問題上留下評論'差異不是一個領域,看看我的答案是另一個解決方案'。 Offcourse,首先你需要50個信譽來評論無處不在... – Konerak

+0

謝謝你的建議,我在StackOverflow的新手:) –

+0

沒問題。開始的日子並不是真正的實際StackOverflow系統的代表,因爲你的聲譽仍然非常有限。一旦你有一個100,一個世界打開,然後在3K你是自由的家:) – Konerak

2

你可以只是他們。減去:

SELECT * FROM table ORDER BY Vote_Up-Vote_Down DESC 
+0

**,而無需創建另一列來存儲它們的區別 – FBwall

+0

正確。數據是爲每一行計算的。你也可以選擇數據作爲列本身:'SELECT *,Vote_Up - Vote_Down作爲差異從表ORDER BY Vote_Up-Vote_Down DESC'。 – Konerak

1

一個多種變異(使用子查詢) -

SELECT * FROM (
    SELECT ID, Vote_Up, Vote_Down, Vote_Up - Vote_Down DIFFERENCE FROM table_name 
) t 
ORDER BY DIFFERENCE; 
相關問題