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
答案 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;