代码之家  ›  专栏  ›  技术社区  ›  Lee Cheung

SQL-选择两列之间的顶部差异

  •  1
  • Lee Cheung  · 技术社区  · 7 年前

    我正在寻找一些查询来获取两列之间的顶部差异,并返回列“name”以及它们之间的差异。

    我正在使用PHP(PDO)对MySQL数据库执行此操作。

    这是我的桌子:

    表名=玩家。

    +--------+--------+--------+
    |  name  | score1 | score2 |
    +--------+--------+--------+
    | bob    |     10 |      5 |
    | sarah  |      3 |      1 |
    | george |      2 |      9 |
    +--------+--------+--------+
    

    如你所见,鲍勃的差值为5。 莎拉差2。 乔治差7。

    在这种情况下,乔治在两个分数之间的差异最大。 因此,我想得到乔治的名字和两个分数之间的差异。

    所以在我的页面上,我应该打印字符串: George (+7)

    此外,如果2个或更多个具有相同的差异,则应选择具有最高差异的一个 score1 . 如果多人有相同的差异 分数1 那么它应该只选择其中的任何一个,这无关紧要。

    但我如何选择两者之间的区别呢?

    我没有找到这方面的任何文档。

    1 回复  |  直到 7 年前
        1
  •  5
  •   Gordon Linoff    7 年前

    您可以使用 order by limit :

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