我正在开发一个项目,我需要根据给定行的内容与两列之一进行表连接。基本上,给定一个特定的用户名,我想获取他们正在玩的所有游戏中所有对手的信息。我在这里使用的两个表是 GameSession 和 Users。 GameSession 为每个玩家(Player1 和 Player2)都有一列,它们是 Users 表列 Username 中的外键,该列还包含 Rank 列。这是我的选择语句:
SELECT CASE WHEN GameSession.Player1 = 'BOB' THEN GameSession.Player2
ELSE GameSession.Player1
END AS Opponent, Users.Rank
FROM GameSession
INNER JOIN Users
ON Users.Username=Opponent
WHERE GameSession.Player1 = 'BOB' OR GameSession.Player2 = 'BOB'
我在这里使用 BOB 作为一次性值。
我通过 phpMyAdmin 进行测试时遇到的 SQL 错误如下:
#1054 - Unknown column 'Opponent' in 'on clause'
我相当有信心我的逻辑是正确的,但我很花时间查找有关适用于我的情况的语法的任何信息。如果有人能帮助我,我真的很感激,我已经为此挠头好几个小时了。预先感谢:)
最佳答案
您需要复制整个表达式:
FROM GameSession
INNER JOIN Users
ON Users.Username=
CASE WHEN GameSession.Player1 = 'BOB' THEN GameSession.Player2
ELSE GameSession.Player1
END
关于mysql - 尝试使用 CASE 的结果作为 Inner Join 的标准,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10198181/