我桌子的结构:
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查询的内容是什么?
答案 0 :(得分:2)
您不想将它们加在一起。
您用来检索此内容的JOIN
类型最终将会找到它找到的所有行的交叉产品。这意味着,如果您有4个帖子,2个评论,3个投票和6个收藏,您在结果中将获得4 * 2 * 3 * 6行,而不是在执行单独查询时获得4 + 2 + 3 + 6行。
你想要JOIN
的唯一时间是这两件事本质上是相关的。也就是说,您想要检索与收藏,投票或评论相关联的帖子。
根据你的例子,这些事情没有这种共性。