Mysql 返回所有用户的帖子ASC,最后7篇除外加入sql
我想返回除最后7篇之外的所有用户帖子。MySql 模式如下所示: 如果我离开用户表的连接 我通过最后一个查询检索结果,但它有太多子查询。。。Mysql 返回所有用户的帖子ASC,最后7篇除外加入sql,mysql,sql,Mysql,Sql,我想返回除最后7篇之外的所有用户帖子。MySql 模式如下所示: 如果我离开用户表的连接 我通过最后一个查询检索结果,但它有太多子查询。。。 它是实现我想要的东西所需要的子查询吗?是否有较短的版本?您不需要外部联接,事实上,p.id\u user=4将其转换为内部联接 您应该能够使用限制跳过前7行: SELECT q.*,q.id_post as id FROM ( SELECT FROM posts AS p WHERE p.id_user=4 ORDER BY p.da
它是实现我想要的东西所需要的子查询吗?是否有较短的版本?您不需要外部联接,事实上,p.id\u user=4将其转换为内部联接 您应该能够使用限制跳过前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
您当前的查询不需要连接到用户,您不需要访问该表中的任何列,但这可能是一个精简版请看,这不是一个困难的问题。。。问题基本上是如何返回除最后7篇之外的所有用户帖子。也许我的“尝试”不是解决问题的方法。是的,谢谢,它很有效,但请解释一下这个999999999?@joe:这是一个任意大的数字,比用户可能发布的帖子数量还要多:-
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 )
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