我有一个加入,可以选择我关注的用户和朋友的所有帖子
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)的所有帖子?基本上,还选择我的所有帖子?无需复制任何数据。
我没有任何方法可以对此进行测试,但我认为以下内容会按预期工作:
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)
如果您基本上想要一个表中的 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 会更好