SQL根据另一列的值选择列

标签 sql select

考虑下表。

-------------------------------------------------- ---
| 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/

相关文章:

mysql - SQL JOIN,还是两个选择?

sql - 在 SQL Server 中将 varchar 转换为 uniqueidentifier

mysql - SQL 计算所有行而不是计算单个行

mysql - 我的 SELECT 和其他两个查询运行缓慢

mysql - 如何将查询结果设置为可查询表?

mysql - SQL根据where row id将内容从一个表移动到另一个表

sql - 如何执行SQL查询而不显示结果

sql - 在 SQL Server 2008 R2 中创建用户定义的表类型时出错

sql - postgresql 中带有计数的分层随机样本

Mysql 将重复数据的行位置更改为列位置