SELECT语句具有不同的列数

时间:2018-01-03 18:44:32

标签: php mysql mysql-error-1222

我正在制作一个小型的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

我搜索了几个小时,但找不到符合我查询的答案。 我将非常感谢您使用上述代码的更好版本的答案。

提前致谢。

2 个答案:

答案 0 :(得分:0)

将两个查询合并在一起时,两者上的列必须匹配。

您在第一个查询中选择posts,follow,users,在第二个查询中选择posts,users

这不起作用。

From the mysql manual

第一个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'