有条件地选择MYSQL列

Kap*_*rma 6 mysql sql phpmyadmin

我的问题的示例模式在SQLFiddle中给出,如下所示:

CREATE TABLE `players` (
  `player1id` int(11) NOT NULL,
  `player2id` int(11) NOT NULL,
  PRIMARY KEY (`player1id`,`player2id`)
) ENGINE=InnoDB;

INSERT INTO `players` values
(1,5),
(1,7),
(5,3),
(5,4),
(2,1);
Run Code Online (Sandbox Code Playgroud)

在网络游戏中,我想选择对手,可能是玩家player1id或玩家player2id.

示例需要输入/输出

Input 1: Output 5, 7, 2
Input 5: Output 1, 3 ,4
& so on.
Run Code Online (Sandbox Code Playgroud)

也就是说,所需的数据可以在任何列中,但我需要有条件地或以任何其他方式在单列中输出.我听说过MySQL条件列,但无法创建查询以获取所需的输出.有人可以请求帮助所需的查询.

编辑

基于此链接,我运行以下查询但失败了.

SELECT IF(PLAYER1ID IS 1,PLAYER2ID as opponent,PLAYER1ID as opponent) 
FROM players
WHERE PLAYER1ID = 1 OR PLAYER2ID = 1;
Run Code Online (Sandbox Code Playgroud)

Yog*_*ngh 7

我想你可以使用case when then如下语法:

SELECT CASE WHEN player1id = 1 THEN player2id ELSE player1id  END
FROM players WHERE player1id =1 OR player2id=1;
Run Code Online (Sandbox Code Playgroud)

或者:

SELECT CASE WHEN player1id = 1 THEN player2id WHEN player2id =1 THEN player1id  END
FROM players WHERE player1id =1 OR player2id=1;
Run Code Online (Sandbox Code Playgroud)

  • 谢谢尤根德拉。我尝试“SELECT CASE WHENplayer1id=1THENplayer2idWHENplayer2id=1THENplayer1idENDAS对手FROMplayersWHEREplayer1id=1ORplayer2id=1”根据您的回复添加自定义列名称。完美的。 (2认同)