我有下表,其中我存储问题和多个答案,其ID为quetion,如下所示
table
ID Content QID
1 Q1 0
2 Q2 0
3 A1 1
4 A1 2
5 A2 1
6 A2 2
在上面的问题Q和答案的答案
现在我需要结果作为问题然后答案等等,例如
我需要像第一个问题那样的输出,然后是那个问题的所有答案..那么第二个问题和那个问题的所有答案......
1 Q1
3 A1
5 A2
2 Q2
4 A1
6 A2
答案 0 :(得分:1)
这是一个廉价的解决方案(使用MySQL测试):
SET @max_id = (SELECT MAX(ID) FROM `table`);
SELECT * FROM `table` ORDER BY IF(QID > 0, @max_id * QID + ID, @max_id * ID)
它仅适用于一级问题/答案。因此,如果答案可以包含子问题和子答案,则此解决方案将不适合您。我确信有更好的解决方案。
如果你想在一个查询中运行它,你可以这样做:
SELECT * FROM `table`
ORDER BY IF(QID > 0,
(SELECT MAX(ID) FROM `table`) * QID + ID,
(SELECT MAX(ID) FROM `table`) * ID)
答案 1 :(得分:1)
首先,我真的认为这是存储数据的一种糟糕方式。 其次,我甚至认为检索数据是一种糟糕的方式......
无论如何,我还没有找到你的结果的SQL语句,但也许这可以帮助你:
SELECT question.ID as QuestionID, question.Content as Question,
answer.ID as AnswerID, answer.Content as Answer
FROM Test question, Test answer
WHERE question.ID = answer.QID
ORDER BY question.Content ASC
这应该允许您使用结果执行所需的操作...(使用SQL Server测试)