-2

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

我已经搜索了几个小时,但找不到与我的查询匹配的答案。我将非常感谢上述代码的更好版本的答案。

提前致谢。

4

2 回答 2

0

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

您从posts,follow,users第一个查询和posts,users第二个查询中进行选择。

这行不通。

从mysql手册

第一个 SELECT 语句中的列名用作返回结果的列名。在每个 SELECT 语句的相应位置列出的选定列应具有相同的数据类型

于 2018-01-03T18:47:42.950 回答
0

也许 JOIN 会更好地为您服务……像这样:

SELECT * FROM posts
JOIN users on posts.author_id=users.id 
JOIN followers on users.id=follow.following 
WHERE follow.follower='$id' 
于 2018-01-03T19:08:57.363 回答