考虑下表。
-------------------------------------------------- ---
| game_id | blue_player_id | red_player_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>
你需要这样的东西
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
关于SQL根据另一列的值选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27971505/