多循环中的查询和按上次查询的ID排序

问题描述 投票:1回答:1

我有两个while循环和两个查询。

我必须通过其ID将posts作为DESC进行订购。但是posts循环在另一个查询的循环下。

$follows=$db->prepare("SELECT * FROM follows WHERE follower=:login");
$follows->execute([':login'=>$login['id']]);
while($followed=$follows->fetch()) {

    $posts=$db->prepare("SELECT * FROM posts WHERE user=:followed ORDER BY id DESC");
    $posts->execute([':followed'=>$followed['following']]);
    while($post=$posts->fetch()) {

    ?>

    ...

    <?php }} ?>

此方法根据下表的ID号订购帖子。我只想将帖子ID排序为DESC。我该如何解决?

php mysql sql sql-order-by
1个回答
0
投票

我认为您可能使这一过程变得过于复杂。如果需要单个数据集,则应使用单个联接的查询。您可以执行一次,然后使用php遍历结果:

select ...
from follows f
inner join posts p on p.user = f.following
where f.follower = :login
order by p.id desc

请注意,我没有将select子句留空。您应该真正枚举所需的列(并在需要时对它们进行别名以避免冲突),而不要使用*:这样,结果集的结构就很明确。

© www.soinside.com 2019 - 2024. All rights reserved.