0

这是我为获取 Author-1 的所有评论而编写的查询。Author-1 写了 2 个帖子,每个帖子都有很多评论。我想要所有这些评论。

  SELECT * 
  FROM `package_reviews`
  WHERE `post_id` = (SELECT `post_id` 
                     FROM `wp_posts` 
                     WHERE `post_author`=1);

获取错误消息为 #1242 - 子查询返回超过 1 行。

4

4 回答 4

1

你应该在这里使用加入。

像这样的东西。

SELECT * FROM `package_reviews` r LEFT JOIN `wp_posts` p ON r.post_id= p.post_id WHERE p.post_author = 1
于 2013-03-13T11:20:36.590 回答
0

你需要

SELECT * FROM `package_reviews`
  WHERE `post_id` IN 
   (SELECT `post_id` FROM `wp_posts` WHERE `post_author`=1);

如果您想返回所有评论。

于 2013-03-13T11:22:17.333 回答
0

您可以使用 LIMIT 限制子查询

 SELECT * 
 FROM `package_reviews`
 WHERE `post_id` IN (SELECT `post_id` 
                    FROM `wp_posts` 
                    WHERE `post_author`=1
                    );
于 2013-03-13T11:22:25.360 回答
0

像这样更改您的代码:SELECT * FROM package_reviews WHERE post_id= ANY (SELECT post_id FROM wp_posts WHERE post_author=1); 这个链接非常有用 http://dev.mysql.com/doc/refman/5.0/en/subquery-errors.html

于 2013-04-11T08:52:00.340 回答