我有一个 MySQL 数据库表,用于保存用户的反馈(列“feed”)。 他们都可以提出问题(type = que,ref = 0)并回复(type = 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”的所有答案,并构建行跨度。 有人遇到过类似的挑战吗?
最佳答案
以下查询将从 feedback
表中返回按父 id
排序的记录,父线程中的记录出现在子线程之前。
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
排序。这是可行的,因为父线程的 id
总是小于其子线程。
关于php - 在 HTML 中将 MySQL 表的相似行分组在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39792563/