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 bylimit:

select t.*, (score2 - score1) as diff
from t
order by abs(score2 - score1) desc, score1 desc
limit 1;