例如,我需要通过帖子id
找到用户。用户和帖子的数据库可能如下所示:
Users:
id | username | password
---+----------+---------
1| John| ****
2| Eve| ****
3| Rich| ****
Posts:
id | author_id | contents
---+-----------+---------
1| 1| I'm John
2| 2| I'm Eve
3| 3| I'm Rich
4| 3| It's Rich not rich, keep that on mind...
我的情况与发布< - >用户情况略有不同,因为在我的情况下,我不需要任何有关帖子的信息。
所以根据以上内容,并借助我发现的一些随机帖子(MySql问题,我从来不知道在google上搜索什么)我认为我的查询应该是这样的:
SELECT username, id
FROM `user`
WHERE id IN (SELECT author_id FROM `post` WHERE author=$MYID)
这不起作用,所以我猜想需要更神奇而不是神秘的IN
声明。
答案 0 :(得分:0)
如果我理解正确,这可行:
SELECT username, id FROM `user` WHERE id IN (SELECT author_id FROM `post` WHERE id=$MYID)
答案 1 :(得分:0)
问题是post
与posts
和user
与users
的对比?
SELECT username, id
FROM `users`
WHERE id IN (SELECT author_id FROM `posts` WHERE author=$MYID);
更重要的是,早期版本的MySQL(高达5.6.x)在优化in
查询方面表现不佳。您可以将其重写为:
SELECT username, id
FROM `users` u
WHERE exists (SELECT 1 FROM `posts` p WHERE author=$MYID and p.author_id = u.id)