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
考虑以下 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