【问题标题】:Queries in multiple loop and Ordering by id of last query多循环中的查询和按最后一个查询的 id 排序
【发布时间】:2020-02-08 00:33:17
【问题描述】:

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

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

$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号排序帖子。 我想将帖子订购为 DESC,仅用于帖子的 ID。我该如何解决这个问题?

【问题讨论】:

    标签: php mysql sql sql-order-by


    【解决方案1】:

    我认为您可能过于复杂了。如果您需要单个数据集,则应使用单个连接查询。你可以执行一次,然后用 php 循环遍历结果:

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

    请注意,我将select 子句留空。你真的应该枚举你想要的列(如果需要,给它们取别名以避免冲突)而不是使用*:这样,结果集的结构是明确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多