MySQL Select with Inner Join, Limit only first

标签 mysql sql inner-join limit

我需要对数据库中的帖子进行分页,然后编写下一个查询:

SELECT posts.ID, posts.date, comments.name, comments.value 
FROM posts 
INNER JOIN comments 
    ON comments.ID = posts.ID 
INNER JOIN relations 
    ON relations.ID = posts.ID 
WHERE type_rel=1 AND status_post=1 AND 
LIMIT 0,10

问题在 LIMIT 语句中,我只需要限制“posts”表。

评论表有很多行,如果我将限制设置为“0,10”,则“帖子”表限制为 10 个帖子,但评论表也限制为 10 个。

有人能解决我的问题吗?我在 PHP 查询中使用它。

抱歉我的英语不好,提前致谢。

最佳答案

可以使用子查询限制结果集,然后加入:

SELECT 
  posts.ID, 
  posts.date, 
  comments.name, 
  comments.value 
FROM
  (SELECT * FROM posts WHERE status_post = 1 LIMIT 0,10) posts
LEFT JOIN 
  comments 
  ON comments.ID = posts.ID 
LEFT JOIN 
  relations 
  ON relations.ID = posts.ID AND relations.type_rel = 1

从评论来看,你索引文件中的查询是错误的,这是正确的:

SELECT 
  wp_posts.ID, 
  wp_posts.post_date, 
  wp_postmeta.meta_key, 
  wp_postmeta.meta_value 
FROM (SELECT * FROM wp_posts WHERE post_status="publish" AND post_type="post" LIMIT 0,2) wp_posts 
LEFT JOIN wp_postmeta 
  ON wp_postmeta.post_id = wp_posts.ID 
LEFT JOIN wp_term_relationships 
  ON wp_term_relationships.object_id = wp_posts.ID 
  AND wp_term_relationships.term_taxonomy_id=2

示例结果 here ,如您所见,您有两个帖子,id 1 和 5。

如果你想保留有 term_taxonomy_id = 2 的帖子,使用这个:

SELECT 
  wp_posts.ID, 
  wp_posts.post_date, 
  wp_postmeta.meta_key, 
  wp_postmeta.meta_value 
FROM (
  SELECT * 
  FROM wp_posts 
  JOIN wp_term_relationships 
  ON wp_term_relationships.object_id = wp_posts.ID 
  AND wp_term_relationships.term_taxonomy_id = 2
  WHERE post_status="publish" AND post_type="post" LIMIT 0,2) wp_posts 
LEFT JOIN wp_postmeta ON wp_postmeta.post_id = wp_posts.ID

Example here ,帖子 ID 为 5 和 7,限制为 0,1 仅返回 5。

关于MySQL Select with Inner Join, Limit only first,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25541730/

相关文章:

php - 获取子记录较少的MySQL记录

sql - 为什么稀疏列中的非空值在 SQL Server 2008 中占用额外空间

php - 有没有办法使用 PHP 而不是使用 mssql_pconnect() 将 MySQL 连接到 SQL DB?

sql - 多个 INNER JOIN SQL Access

javascript - 无法检索全日历事件的时间和日期

mysql - 如何用一系列日期填充表格?

MySQL内部连接在同一个表和对上

php - 将 group by 和 min 子句与 inner join 一起使用时数据不一致

php - Mailchimp 双重选择加入和网站帐户确认

mysql求和字段的值,根据其他字段限制