我有一个MySQL数据库表,我在其中保存了用户的反馈(">feed"列(。他们既可以提出问题(类型 = que,ref = 0(,也可以回复(类型 = ans(发布的问题。">ref"列显示他们所指问题的">id":
id username feed type ref
1 mr_x question_1 que 0
2 mrs_y question_2 que 0
3 mr_z answer_to_2 ans 2
4 mr_z answer_to_1 ans 1
5 mr_x answer_to_2 ans 2
现在,我正在尝试以HTML显示此表。我想将所有带有相同"ref"的答案放在一起,并在它们所指的问题下方显示它们。
使用 ORDER 的 PHP 查询,例如:
"SELECT * FROM feedback ORDER BY ref ASC";
在这里不起作用。
我期望的 HTML 输出是:
mr_x question_1 que 0
mr_z answer_to_1 ans 1
mrs_y question_2 que 0
mr_z answer_to_2 ans 2
mr_x answer_to_2 ans 2
我可能需要使用相同的">ref"计算所有答案,并构建一个行跨度。有没有人遇到过类似的挑战?
以下查询将返回按父id
排序的feedback
表中的记录,父线程中的记录显示在子线程之前。
SELECT f.*
FROM feedback f
ORDER BY CASE WHEN f.ref = 0 THEN f.id ELSE f.ref END,
f.id
解释:
ORDER BY
使用两个排序条件。 首先,当ref
为零(表示父线程(时,它按id
排序,当不为零时按ref
排序,表示子线程。 然后,要将父线程放在子线程之前,它按id
排序。 这是有效的,因为父线程将始终具有小于其子线程的id
。