表coulmn合并查询

Kis*_*pta 3 mysql sql database

我做了一个表查询是

CREATE TABLE questions (
     _id             INTEGER PRIMARY KEY AUTOINCREMENT
   , question        TEXT
   , correct_answer  TEXT    DEFAULT (null)
   , answer1         TEXT    DEFAULT (null)
   , answer2         TEXT    DEFAULT (null) 
   , answer3         TEXT    DEFAULT (null)
   , answer4         TEXT    DEFAULT (null)
   , difficulty      INTEGER DEFAULT (null) 
   , nid             INTEGER
);
Run Code Online (Sandbox Code Playgroud)

现在想要省略correct_answer列,并在answer1列中做出正确答案,在answer2,answer3,answer4中做出其他3个错误答案.但问题是目前正确答案可能是四个中的任何一个,所以我无法合并

作为示例表就像 在此输入图像描述

你可以在第一行看到答案2中的正确答案,第二行正确答案在答案4中

那么我怎么只在answer1栏和answer2,answer3,answer4中分别得到正确的答案?

什么是SQL查询?或任何其他想法?

Mar*_*rcx 5

我会做这样的事情:

insert into question_new (_id, qestion, answer1, answer2, answer3, answer4)
SELECT _id, question, 
correct_answer as answer1, 
if (correct_answer = answer2 , answer1 , answer2) as answer2,
if (correct_answer = answer3 , answer1 , answer3) as answer3,
if (correct_answer = answer4 , answer1 , answer4) as answer4
 FROM questions
Run Code Online (Sandbox Code Playgroud)

简单来说:

  1. answer1将始终是correct_answer列.
  2. 答案2/3/4将会
    • 如果与正确答案不同,则为同一列(与默认表相同)
    • answer1如果等于正确答案(在answer1中有正确答案,所以你需要在新位置设置错误的答案1)

更新

使用添加相同的查询 case when

insert into question_new (_id, qestion, answer1, answer2, answer3, answer4)
SELECT _id, question, 
correct_answer as answer1, 
case when correct_answer = answer2 then answer1 else answer2 end as answer2,
case when correct_answer = answer3 then answer1 else answer3 end as answer3,
case when correct_answer = answer4 then answer1  else answer4 end as answer4
 FROM questions
Run Code Online (Sandbox Code Playgroud)