当前位置: 首页 > 面试题库 >

有条件地选择MYSQL列

席兴朝
2023-03-14
问题内容

我的问题的示例架构在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);

在在线游戏中,我想选择对手,该对手可以在玩家player1id或中player2id

所需的示例输入/输出

Input 1: Output 5, 7, 2
Input 5: Output 1, 3 ,4
& so on.

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

编辑

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

SELECT IF(PLAYER1ID IS 1,PLAYER2ID as opponent,PLAYER1ID as opponent) 
FROM players
WHERE PLAYER1ID = 1 OR PLAYER2ID = 1;

问题答案:

我认为您可以使用case when then以下语法:

SELECT CASE WHEN player1id = 1 THEN player2id ELSE player1id  END
FROM players WHERE player1id =1 OR player2id=1;

或者:

SELECT CASE WHEN player1id = 1 THEN player2id WHEN player2id =1 THEN player1id  END
FROM players WHERE player1id =1 OR player2id=1;


 类似资料:
  • 问题内容: 我正在尝试将其编译。.我有一个带有firstname和lastname字段的表,并且我有一个字符串,例如“ Bob Jones”或“ Bob Michael Jones”等。 事实是,例如我姓鲍勃,姓迈克尔·琼斯 所以我想 但是它说未知列“ firstlast” ..有人可以帮助吗? 问题答案: 您提供的别名用于查询的输出-它们本身在查询中不可用。 您可以重复表达: 或包装查询

  • 问题内容: 我正在尝试将其编译。.我有一个带有firstname和lastname字段的表,并且我有一个字符串,例如“ Bob Jones”或“ Bob Michael Jones”等。 事实是,例如,我的名字有鲍勃,姓氏有迈克尔·琼斯 所以我想 但是它说未知列“ firstlast” ..有人可以帮助吗? 问题答案: 您提供的别名用于查询的输出-在查询本身中不可用。 您可以重复表达: 或包装查询

  • 问题内容: 我正在尝试将其编译。.我有一个带有firstname和lastname字段的表,并且我有一个字符串,例如“ Bob Jones”或“ Bob Michael Jones”等。 事实是,例如,我姓鲍勃,姓迈克尔·琼斯 所以我想 但是它说未知列“ firstlast” ..有人可以帮助吗? 问题答案: 您提供的别名用于查询的输出-它们本身在查询中不可用。 您可以重复以下表达式: 或包装查询

  • 问题内容: 我有两个这样的表,两个都是单独的表 另一个表包含以下结构 我需要从表II中选择AccountNo或TempAccountNo,Mycolumn,条件是 我需要选择 我需要选择 我该如何实现。 问题答案:

  • 问题内容: 我的数据库中具有以下结构: 现在,除id以外的所有其他列均为boolean类型。例如说 我正在寻找一种返回列名称为true(= 1)的列名称的方法,因此在此示例中,返回值应类似于 将会有动态的列数,因为经常更改表以添加新列和删除旧列。 到目前为止,我拥有的函数看起来像这样-应该是该函数返回该列名称的字符串… 有什么方法可以使用直接SQL做到这一点?我正在使用MySQL。 问题答案: 如

  • 常常来说,一个play的结果经常取决于一个变量的值,事件(从远端系统得到事件),或者之前任务的结果.在有些情况下,这些变量的值也会取决于其他变量. 进而,可以建立多余的组基于这些主机是否符合某些条件来操控主机,Ansible 提供了很多不同选项,来控制执行流. 让我们详细看看这些都是啥. When 语句 有时候用户有可能需要某一个主机越过某一个特定的步骤.这个过程就可以简单的像在某一个特定版本的系