1

我有一个形状的问题数据库

ID , Question , Answer1 , Answer2 , Answer3 , Answer4 , True

其中“True”是正确答案的索引:

True = 0 --> Answer1
....
True = 3 --> Answer4

我只需要选择问题和正确答案,这就是我到目前为止得到的:

SELECT Question , 'Answer' || (True+1) From Questions

但它返回问题和“answer1”或“answer2”......即:列的名称我不需要它的值

4

2 回答 2

1

你可以CASE在 MySQL 中使用。

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

或者

SELECT  Question,
        CASE 
            WHEN TRUE = 0 THEN Answer1
            WHEN TRUE = 1 THEN Answer2
            WHEN TRUE = 2 THEN Answer3
            WHEN TRUE = 3 THEN Answer4
        END AS Answer
FROM    tableName
于 2013-01-24T02:01:53.223 回答
0

如果您可以重构数据库架构,则可以将其更改为:

QuestionID、QuestionText、AnswerID、AnswerText、IsCorrect

要获得正确答案,请使用以下查询:

从 QuestionID = X 且 IsCorrect = True 的问题中选择 *

要获得所有答案,请使用以下查询:

从 QuestionID = X 的问题中选择 *

现在,您可以随心所欲地为一个问题提供尽可能多或尽可能少的答案。

于 2013-01-24T02:02:01.073 回答