SQL 根据另一列的值选择列

Ste*_*fan 4 sql select

考虑下表。

-------------------------------------------------- ---
| 游戏 ID | 蓝色_玩家_id | 红色玩家 ID | 关闭 |
-------------------------------------------------- ---
| 1 | 4 | 5 | “蓝色”|
-------------------------------------------------- ---
| 2 | 1 | 2 | “红色”|
-------------------------------------------------- ---
| 3 | 3 | 4 | “蓝色”|
-------------------------------------------------- ---

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

因此,对于 game_id=1,它应该返回 4,对于 game_id=2,它应该返回 2,对于 game_id=3,它应该返回 3。

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

Jak*_*bčo 5

如果是SQL,可以使用CASE语句。

SELECT CASE <variable> WHEN <value>      THEN <returnvalue>
   WHEN <othervalue> THEN <returnthis>
   ELSE <returndefaultcase>
   END as something
FROM <table>
Run Code Online (Sandbox Code Playgroud)

你需要这样的东西

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
Run Code Online (Sandbox Code Playgroud)