我在mysql数据库表中有两列投票:接受和拒绝
我想仅查询接受拒绝列值
后的最高结果table : votes
=================
accept | reject
=================
7 | 9
5 | 1
2 | 15
5 | 1
我只想要正面值和最高值,这里 5 - 1 = 4 实际上,我有很多其他专栏以及接受和拒绝......我只想 ORDER 结果按差异的最高值(仅限正面)和 LIMIT 它为1,这样我就可以得到我想要的那一排......我清楚了吗? :) 怎么写这个查询? 感谢..
答案 0 :(得分:6)
使用:
SELECT t.accept,
t.reject,
t.accept - t.reject AS difference
FROM VOTES t
WHERE t.accept - t.reject > 0
ORDER BY difference DESC
LIMIT 1
使用子查询替代:
SELECT v.accept,
v.reject
FROM VOTES v
WHERE v.accept - v.reject > 0
JOIN (SELECT MAX(t.accept - t.reject) AS difference
FROM VOTES t
WHERE t.accept - t.reject > 0) x ON x.difference = (v.accept - v.reject)
答案 1 :(得分:1)
SELECT (accept - reject) as top_value FROM table WHERE (accept - reject) > 0
所以如果你有这样的价值观:
=============================
accept | reject | top_value
=============================
5 | 1 | 4
7 | 9 | -2
2 | 15 | -13
5 | 5 | 0
查询将仅选择第1行。
答案 2 :(得分:0)
我假设这两列只是表格中的一个摘录,并且您希望整个行(accept-reject)最大。然后你就可以这样做:
SELECT * FROM votes
WHERE accept-reject = (SELECT MAX(accept-reject) FROM votes)
LIMIT 1