SQL - Select 2 列之间的最大差异
SQL - Select the top difference between 2 columns
我正在寻找一些查询来获得 2 列之间的最大差异,return 列 "name" 以及它们之间的差异。
我正在使用 PHP (PDO) 对我的 MySQL 数据库执行此操作。
这是我的 table:
Table 姓名 = 玩家.
+--------+--------+--------+
| name | score1 | score2 |
+--------+--------+--------+
| bob | 10 | 5 |
| sarah | 3 | 1 |
| george | 2 | 9 |
+--------+--------+--------+
如您所见,Bob 相差 5。
莎拉的差异为 2。
而乔治相差7.
在这种情况下,George 的 2 分差值最大。
因此我想得到乔治的名字和两个分数之间的差异。
所以在我的页面上,我应该打印字符串:George (+7)
另外,如果2个或2个以上有相同的差异,它应该选择最高的score1
。如果多人有相同的差异 score1
那么它应该只选择他们中的任何一个,没关系。
可是我怎么能select区分这些呢?
我还没有找到这方面的任何文档。
您可以使用 order by
和 limit
:
select t.*, (score2 - score1) as diff
from t
order by abs(score2 - score1) desc, score1 desc
limit 1;
我正在寻找一些查询来获得 2 列之间的最大差异,return 列 "name" 以及它们之间的差异。
我正在使用 PHP (PDO) 对我的 MySQL 数据库执行此操作。
这是我的 table:
Table 姓名 = 玩家.
+--------+--------+--------+
| name | score1 | score2 |
+--------+--------+--------+
| bob | 10 | 5 |
| sarah | 3 | 1 |
| george | 2 | 9 |
+--------+--------+--------+
如您所见,Bob 相差 5。 莎拉的差异为 2。 而乔治相差7.
在这种情况下,George 的 2 分差值最大。 因此我想得到乔治的名字和两个分数之间的差异。
所以在我的页面上,我应该打印字符串:George (+7)
另外,如果2个或2个以上有相同的差异,它应该选择最高的score1
。如果多人有相同的差异 score1
那么它应该只选择他们中的任何一个,没关系。
可是我怎么能select区分这些呢?
我还没有找到这方面的任何文档。
您可以使用 order by
和 limit
:
select t.*, (score2 - score1) as diff
from t
order by abs(score2 - score1) desc, score1 desc
limit 1;