考虑下表。
-------------------------------------------------- --- | 游戏 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的查询方法呢?
如果是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)