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

时间:2009-12-13 17:42:23

标签: sql mysql database

我在mysql数据库表中有两列投票接受拒绝

我想仅查询接受拒绝列值

后的最高结果
table : votes
=================
 accept | reject
=================
   7    |   9
   5    |   1
   2    |   15
   5    |   1

我只想要正面值和最高值,这里 5 - 1 = 4 实际上,我有很多其他专栏以及接受和拒绝......我只想 ORDER 结果按差异的最高值(仅限正面) LIMIT 它为1,这样我就可以得到我想要的那一排......我清楚了吗? :) 怎么写这个查询? 感谢..

3 个答案:

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