我必须选择我的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
答案 0 :(得分:4)
在JOIN
和subquery
之间,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