SQL 根据另一列的值选择列

SQL selecting column depending on the value of another column

考虑以下 table。

---------------------------------------------- ---
| game_id | blue_player_id | red_player_id | turn_of |
---------------------------------------------- ---
| 1 | 4 | 5 | "blue" |
---------------------------------------------- ---
| 2 | 1 | 2 | "red" |
---------------------------------------------- ---
| 3 | 3 | 4 | "blue" |
---------------------------------------------- ---

我想编写一个查询,根据给定游戏 ID 的 turn_of 列选择 blue_player_id 或 red_player_id。

因此对于 game_id=1 它应该 return 4,对于 game_id=2 它应该 return 2,对于 game_id=3 它应该 return 3.

我知道我可以在两个查询中执行此操作,首先选择轮到谁,然后在第二个查询中选择正确的列。但是,是否有一种不使用特定于数据库的查询方法 SQL?

select gameId,
       case when turn_of = 'blue' 
       then blue_player_id 
       else red_player_id 
       end as PlayerID
from MYTable
SELECT
    game_id,
    CASE turn_of
       WHEN 'blue' THEN blue_player_id
       WHEN 'red'  THEN red_player_id 
       ELSE null
    END as PlayerId
FROM table

如果SQL.

可以使用CASE语句
SELECT CASE <variable> WHEN <value>      THEN <returnvalue>
   WHEN <othervalue> THEN <returnthis>
   ELSE <returndefaultcase>
   END as something
FROM <table>

你需要这样的东西

SELECT CASE WHEN turn_of='blue'
then blue_player_id else red_player_id 
end as player_id 
FROM Your_TABLE 
WHERE game_id = 0