Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 仅选择差值大于0的值(无负数和0)_Sql_Mysql_Database - Fatal编程技术网

Sql 仅选择差值大于0的值(无负数和0)

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

mysql db表投票中有两列:接受和拒绝

我只想查询接受-拒绝列值之后的顶部结果

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,它不应该返回任何值。。