SQL - SELECT * FROM发布WHERE id_user IN SUBQUERY?

时间:2014-02-07 20:14:25

标签: mysql sql

我必须选择我的SUBQUERY中列出的用户发布的所有帖子 - SUBQUERY是一个只有一列的表 - 用户ID。目的是获取用户“朋友”的所有帖子

我有一个朦胧的记忆,你可以在IN上使用SELECT,但SELECT的结果只能是一列 - 我是对吗

所以这个查询:

SELECT * FROM posts WHERE id_user 
IN (SELECT id_friend as id_user FROM friends WHERE id_user=:some_id_user)

能否完成?如果是这样,是否有更有效的方式?

BTW:我正在使用MySQL

2 个答案:

答案 0 :(得分:4)

JOINsubquery之间,JOIN更快。虽然这取决于场景,但在这种情况下,JOIN会更好。

使用INNER JOIN

SELECT * 
FROM 
    posts P
INNER JOIN 
    friends F ON P.id_user = F.id_friend 
WHERE F.id_user  = :some_id_user

有关详细信息,请参阅此处:Stackoverflow :: Join vs. sub-query

答案 1 :(得分:3)

您可以使用描述的in语句或内部联接来执行此操作。对于像这样的简单查询,我希望性能是相同的。

SELECT * 
FROM posts 
WHERE id_user IN (SELECT id_friend FROM friends WHERE id_user=:some_id_user)

OR(与您的查询类似)

SELECT * 
FROM posts P
JOIN friends F ON P.id_user = F.id_friend AND  F.id_user = :some_id_user