返回所有用户帖子ASC除了最后7个留下加入sql

时间:2018-03-10 21:46:15

标签: mysql sql

我想要返回除最后7个帖子以外的所有用户帖子。 MySQL的。

模式将是这样的:

 SELECT *
 FROM posts
 WHERE id_post < (SELECT * FROM posts min(id_post) WHERE id_user=4 
 ORDER BY id_post DESC LIMIT 7)
 ORDER id_post ASC

如果我使用“用户”表左键加入

SELECT q.*,q.id_post as id
FROM posts q
LEFT JOIN users u ON u.id_user=q.id_user
WHERE p.id_user=4
AND q.id_post < (SELECT min(rel.id_post) as min_id_post
                    FROM 
                    (
                        SELECT p.*
                        FROM posts p
                        WHERE p.id_user=4
                        ORDER BY p.date  DESC 
                        LIMIT 7
                    ) rel )

我通过最后一个查询检索结果,但它有很多子查询... 它是否需要达到我想要的子查询?有更短的版本吗?

1 个答案:

答案 0 :(得分:0)

您不需要外部加入(实际上WHERE p.id_user=4无论如何都将其转换为内部加入)。

您应该可以使用LIMIT跳过前7行:

SELECT q.*,q.id_post as id
FROM
 ( SELECT 
   FROM posts AS p
   WHERE p.id_user=4
   ORDER BY p.date DESC 
   LIMIT 8, 999999999
 ) q
JOIN users u ON u.id_user=q.id_user
WHERE u.id_user=4
ORDER id_post ASC

您当前的查询不需要加入用户,您不能访问该表中的任何列(但这可能是一个精简版本)