Sql 仅选择差值大于0的值(无负数和0)
mysql db表投票中有两列:接受和拒绝 我只想查询接受-拒绝列值之后的顶部结果Sql 仅选择差值大于0的值(无负数和0),sql,mysql,database,Sql,Mysql,Database,mysql db表投票中有两列:接受和拒绝 我只想查询接受-拒绝列值之后的顶部结果 table : votes ================= accept | reject ================= 7 | 9 5 | 1 2 | 15 5 | 1 我只想要正值和最大值,这里5-1=4 实际上,我还有很多其他的列,还有接受和拒绝..我只想按differencepositive的最大值对结果进行排序,并将其限制为1
table : votes
=================
accept | reject
=================
7 | 9
5 | 1
2 | 15
5 | 1
我只想要正值和最大值,这里5-1=4
实际上,我还有很多其他的列,还有接受和拒绝..我只想按differencepositive的最大值对结果进行排序,并将其限制为1,这样我就可以得到我想要的一行..我清楚了吗?:
如何为此编写查询?
谢谢
所以如果你有这样的值:
=============================
accept | reject | top_value
=============================
5 | 1 | 4
7 | 9 | -2
2 | 15 | -13
5 | 5 | 0
查询将仅选择第1行
所以如果你有这样的值:
=============================
accept | reject | top_value
=============================
5 | 1 | 4
7 | 9 | -2
2 | 15 | -13
5 | 5 | 0
查询将只选择第1行。我假设这两列只是表中的一个摘录,并且您希望整行的accept-reject最大。然后你可以这样做:
SELECT * FROM votes
WHERE accept-reject = (SELECT MAX(accept-reject) FROM votes)
LIMIT 1
我假设这两列只是表中的一个摘录,您需要最大接受-拒绝的整行。然后你可以这样做:
SELECT * FROM votes
WHERE accept-reject = (SELECT MAX(accept-reject) FROM votes)
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)
使用:
交替使用子查询:
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)
谢谢,但是我想要的是:如果表中的所有值都是0,它不应该返回任何值。谢谢,但是我想要的是:如果表中的所有值都是0,它不应该返回任何值。。