我正在制作一个小型的php网站,您可以在其中关注其他人,然后查看他们的帖子。 我有三张桌子 - 1.Posts,有post_id和author_id 2.follow,有追随者和追随者 3.users,有id,用户名和所有其他东西。我在sql中尝试以下内容 -
SELECT * FROM posts,follow,users WHERE posts.author_id=users.id AND users.id=follow.following AND follow.follower='$id' UNION SELECT * FROM posts,users WHERE posts.author_id=users.id AND users.id='$id'
其中$ id是登录用户的ID。
它显示以下错误 -
#1222 - The used SELECT statements have a different number of columns
我搜索了几个小时,但找不到符合我查询的答案。 我将非常感谢您使用上述代码的更好版本的答案。
提前致谢。
答案 0 :(得分:0)
将两个查询合并在一起时,两者上的列必须匹配。
您在第一个查询中选择posts,follow,users
,在第二个查询中选择posts,users
。
这不起作用。
第一个SELECT语句中的列名用作返回结果的列名。在每个SELECT语句的相应位置中列出的选定列应具有相同的数据类型
答案 1 :(得分:0)
也许JOIN会更好地为你服务......就像这样:
SELECT * FROM posts
JOIN users on posts.author_id=users.id
JOIN followers on users.id=follow.following
WHERE follow.follower='$id'