【问题标题】:Retrieve last 10 results ASC Left Join MySql检索最后 10 个结果 ASC Left Join MySql
【发布时间】:2018-03-10 15:36:02
【问题描述】:

我正在尝试从按 ASC 排序的 posts 表中检索最后 10 个帖子,但最后一个左连接查询未检索到任何内容。

基本:它检索按DESC排序的结果

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

【问题讨论】:

    标签: mysql left-join


    【解决方案1】:

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

    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 未被识别为列。如果您想编写一个有效的应用程序,您应该捕获并阅读错误消息。

    【讨论】:

    • 是的,第二个查询返回错误我用die(); 设置它。您的回答解决了我的问题,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-28
    • 2016-09-10
    • 2019-07-21
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多