根据两列的差异对数据进行排序

时间:2011-11-07 07:48:01

标签: php mysql sorting

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

3 个答案:

答案 0 :(得分:2)

你可以减去它们:

SELECT * FROM table ORDER BY Vote_Up-Vote_Down DESC

答案 1 :(得分: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;

答案 2 :(得分:1)

另一个变体(带子查询) -

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