代码之家  ›  专栏  ›  技术社区  ›  joe

检索最近10个结果ASC Left Join MySql

  •  0
  • joe  · 技术社区  · 6 年前

    我正试图从 posts 表按ASC排序,但最后一个左连接的查询没有检索到任何内容。

    基本的 :检索按顺序描述的结果

    SELECT 
        p.post, p.id_post, u.name
    FROM 
        posts p
    LEFT JOIN 
        users u ON u.id_user = p.id_user
    WHERE 
        p.id_user = 4 
    ORDER BY 
        p.date  DESC 
    LIMIT 10
    

    订购ASC :根本不起作用:

    SELECT 
        num.* 
    FROM 
        (SELECT 
             p.post, p.id_post, u.name
         FROM 
             posts p
         LEFT JOIN 
             users u ON u.id_user = p.id_user
         WHERE 
             p.id_user = 4 
         ORDER BY 
             p.date DESC 
         LIMIT 10) num 
    ORDER BY 
        p.date ASC
    

    我做错了什么?

    在我的php变量中,我使用 $row['id_post'] $row['post'] $row['name'] 。我不想使用 array_reverse() 就这么简单 sql

    1 回复  |  直到 6 年前
        1
  •  0
  •   Gordon Linoff    6 年前

    您需要在子查询中返回日期:

    SELECT pu.post, pu.id_post, pu.name
    FROM (SELECT p.*, u.name
          FROM posts p LEFT JOIN
               users u
               ON u.id_user = p.id_user
          WHERE p.id_user = 4 
          ORDER BY p.date DESC 
          LIMIT 10
         ) pu 
    ORDER BY pu.date ASC;
    

    您的第二个查询应该返回一条错误消息,大意是 date 未识别为列。您应该捕获 和阅读 如果要编写有效的应用程序,请发送错误消息。