player1_id | score1 | score2 | player2_id
-----------+--------+--------+-----------
         1 |      1 |      1 |          2
         3 |      1 |      1 |          1
        11 |      1 |      0 |         20
         5 |      1 |      1 |         55
       200 |      1 |      2 |         11
        17 |      1 |      1 |          7
        11 |      1 |      3 |          4
        11 |      1 |      1 |        100
        20 |      1 |      1 |          2
        20 |      2 |      1 |         33

根据1分和2分,玩家有“赢”、“平”或“输”的结果。我需要找到球员,谁都有“赢”、“平”和“输”的结果。在这种情况下,玩家11和20。
我被困在这里,任何帮助都非常感谢。

最佳答案

如果我正确理解,你需要:

select p from (
    select player1_id as p, case when score1>score2 then 'W' when score1=score2 then 'D' when score1<score2 then 'L' end as res from your_table
    union all
    select player2_id as p, case when score1>score2 then 'L' when score1=score2 then 'D' when score1<score2 then 'W' end as res from your_table
) t
group by p
having count( distinct res ) = 3

关于sql - 查找具有全部“胜利”,“平局”和“亏损”结果的球员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43974879/

10-09 16:16