我正在使用本文https://stackoverflow.com/a/51816820/6822845中建议的查询来列出我的表内容。这真的很好,我得到了每个节的列表,其子节用逗号分隔在另一列中,因此我可以将其分解并将其转换为数组。我的问题是,我的sections表(在上面链接的我的其他文章下提到)有另一个名为“ sorder”的列,用于保存显示顺序。我不知道为什么,但是我无法将列选择每次输出0时都将其输出。
SELECT sections.sorder as sorder ,section_titel as t1,
GROUP_CONCAT(sub_section_titel) as t2
FROM sections
LEFT JOIN sub_sections ON section_id = sId
GROUP BY t1
ORDER by sorder
每次运行它时,顺序显示为“ 0”。但这不是0。奇怪的是,我可以读取sub_section表中的“ iorder”列。但是主表“ sections”中的“ sorder”列无法访问/每次为0。我正在使用Mysql:
答案 0 :(得分:0)
我创建了一个SQLFiddle,希望它代表您的数据。在该示例中,ORDER BY sorder
工作正常。我还在ORDER BY
中加入了GROUP_CONCAT
,以便可以对小节标题进行排序。因此,使用原始查询:
SELECT section_titel as t1, GROUP_CONCAT(sub_section_titel) as t2
FROM sections LEFT JOIN sub_sections ON section_id = sId
GROUP BY t1
输出为
t1 t2
Section One SubOne,SubTwo
Section Three SubThree
Section Two (null)
但是使用新查询:
SELECT sorder, section_titel as t1, GROUP_CONCAT(sub_section_titel ORDER BY iorder) as t2
FROM sections LEFT JOIN sub_sections ON section_id = sId
GROUP BY t1
ORDER BY sorder
输出为:
sorder t1 t2
1 Section Three SubThree
2 Section One SubTwo,SubOne
3 Section Two (null)
根据Section Three
和Section One
的值,注意SubTwo
和SubOne
以及sorder
和iorder
的重新排序。