如何将四个查询合并为一个查询?

时间:2013-05-03 00:07:07

标签: mysql join

我桌子的结构:

posts (id, name, user_id, about, time)    
comments (id, post_id, user_id, text, time)
users_votes (id, user, post_id, time)
users_favs ( id, user_id, post_id, time)

如何组合这四个查询(而不是UNION):

SELECT `id`, `name`, `user_id`, `time` FROM `posts` WHERE `user_id` = 1
SELECT `post_id`, `user_id`, `text`, `time` FROM `comments` WHERE `user_id` = 1
SELECT `user`, `post_id`, `time` FROM `users_votes` WHERE `user` = 1
SELECT `user_id`, `post_id`, `time` FROM `users_favs` WHERE `user_id` = 1

我应该使用JOIN s吗?

SQL查询的内容是什么?

1 个答案:

答案 0 :(得分:2)

您不想将它们加在一起。

您用来检索此内容的JOIN类型最终将会找到它找到的所有行的交叉产品。这意味着,如果您有4个帖子,2个评论,3个投票和6个收藏,您在结果中将获得4 * 2 * 3 * 6行,而不是在执行单独查询时获得4 + 2 + 3 + 6行。

你想要JOIN的唯一时间是这两件事本质上是相关的。也就是说,您想要检索与收藏,投票或评论相关联的帖子。

根据你的例子,这些事情没有这种共性。