我正在尝试从表中回显圆顶数据,但是由于某种原因,它仅回显了两个结果。可能是因为sub_parent下只有两个可能的数字。我希望它会回显所有6行,但只将它们分组?任何想法出了什么问题吗?
<?php
require_once 'db/db.php';
$sql = "SELECT *
FROM main_menu_sub
GROUP BY sub_parent
ORDER BY id
";
$result = $con->query($sql);
$con->close();
?>
<?php
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
?>
<li><a href="<?php echo $row["Sub_menu_url"]; ?>"><?php echo $row["Sub_menu_title"]; ?></li>
<?php
}
}
?>
答案 0 :(得分:2)
您想要的是ORDER BY
,而不是GROUP BY
。 GROUP BY
的意思是将所有具有相同sub_parent
值的行合并为单个行。通常将其与MAX()
,COUNT()
等聚合函数结合使用,以汇总组中的所有行。
所以您的查询应该是:
SELECT *
FROM main_menu_sub
ORDER BY sub_parent, id
这会将具有相同sub_parent
的所有行放在一起,并在每个组中按id
进行排序。
如果要显示每个sub_parent
组的标题,请参见How can i list has same id data with while loop in PHP?,以获取一种在sub_parent
发生更改时打印标题的技术。