请解决此查询 - mysql

时间:2012-11-29 08:15:57

标签: mysql

我有下表,其中我存储问题和多个答案,其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

2 个答案:

答案 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测试)

相关问题