Mysql 基于单元格值的动态列选择
我有一个形状的问题数据库Mysql 基于单元格值的动态列选择,mysql,sql,sqlite,Mysql,Sql,Sqlite,我有一个形状的问题数据库 ID , Question , Answer1 , Answer2 , Answer3 , Answer4 , True 其中“True”是正确答案的索引: True = 0 --> Answer1 .... True = 3 --> Answer4 我只需要选择问题和正确答案,这是我目前得到的结果: SELECT Question , 'Answer' || (True+1) From Questions 但它返回问题和“回答1”或“回答2”。。。i
ID , Question , Answer1 , Answer2 , Answer3 , Answer4 , True
其中“True”是正确答案的索引:
True = 0 --> Answer1
....
True = 3 --> Answer4
我只需要选择问题和正确答案,这是我目前得到的结果:
SELECT Question , 'Answer' || (True+1) From Questions
但它返回问题和“回答1”或“回答2”。。。ie:i不需要列的名称,它的值可以在MySQL中使用
CASE
SELECT Question,
CASE True
WHEN 0 THEN Answer1
WHEN 1 THEN Answer2
WHEN 2 THEN Answer3
WHEN 3 THEN Answer4
END AS Answer
FROM tableName
或
您可以在MySQL中使用
CASE
SELECT Question,
CASE True
WHEN 0 THEN Answer1
WHEN 1 THEN Answer2
WHEN 2 THEN Answer3
WHEN 3 THEN Answer4
END AS Answer
FROM tableName
或
如果可以重构数据库架构,可以将其更改为: QuestionID,QuestionText,AnswerID,AnswerText,IsCorrect 要获得正确答案,请使用以下查询: 从问题ID=X且IsCorrect=True的问题中选择* 要获取所有答案,请使用以下查询: 从问题ID=X的问题中选择*
现在,您可以为一个问题提供任意多或任意少的答案。如果您可以重构数据库架构,您可以将其更改为: QuestionID,QuestionText,AnswerID,AnswerText,IsCorrect 要获得正确答案,请使用以下查询: 从问题ID=X且IsCorrect=True的问题中选择* 要获取所有答案,请使用以下查询: 从问题ID=X的问题中选择*
现在你可以对一个问题有任意多或任意少的答案。@workoverflow我已经更新了答案。在sqlite上试试哪一个可以用。非常感谢,第二个可以用在mySQL和sqlite上,但是第一个只能用在mySQL上。只是想知道,有没有一种方法可以不用列出所有的情况就可以用呢?喜欢我尝试的方式吗?@workeverflow我已经更新了答案。在sqlite上试试哪一个可以用。非常感谢,第二个可以用在mySQL和sqlite上,但是第一个只能用在mySQL上。只是想知道,有没有一种方法可以不用列出所有的情况就可以用呢?就像我试着做的那样?事实上数据库是巨大的,重构它是浪费时间的,虽然它可以通过查询来完成,但是谢谢你的想法。是的,总是有两种答案,“如果我有更多的时间,这将是伟大的”答案和“这是现在的作品”答案实际上数据库是巨大的,这将是一个浪费时间的重构,而它可以通过查询完成,但感谢你的想法。是的,总是有两种答案,“如果我有更多的时间,这将是伟大的”答案和“这是现在的作品”答案XD