1

我有一个加入,可以选择我关注的用户和朋友的所有帖子

SELECT  * 
FROM    posts a 
LEFT JOIN relationships b
ON a.user_id = b.user_2 
WHERE   b.user_1 = $user_id AND 
 b.status IN (1,3,4)

我怎样才能让这个查询同时选择 a.user_id = $user_id(我的 id)的所有帖子?基本上,还选择我的所有帖子?无需复制任何数据。

4

2 回答 2

0

我没有任何方法可以对此进行测试,但我认为以下内容会按预期工作:

SELECT  * 
FROM    posts a 
LEFT JOIN relationships b
ON a.user_id = b.user_2 
WHERE   b.user_1 = $user_id AND 
 (b.status IN (1,3,4) OR a.user_id = $user_id)
于 2012-08-12T05:18:54.270 回答
0

如果您基本上想要一个表中的 2 个查询的结果,请使用联合查询。您需要修复第二个查询中的 WHERE 子句才能正确,但是类似的东西呢

SELECT  *
FROM    posts a
LEFT JOIN relationships b
ON a.user_id = b.user_2
WHERE   b.user_1 = $user_id AND
 b.status IN (1,3,4)
UNION DISTINCT
SELECT *
FROM    posts a
WHERE   a.user_id = $user_id (my id)

我也会质疑您使用左连接 - 我认为 INNER JOIN 会更好

于 2012-08-12T05:56:55.130 回答