我有以下MySQL查询:
SELECT * FROM posts p WHERE
EXISTS (
SELECT 1 FROM following f WHERE f.from = 2 AND f.to = p.uid
)
OR p.uid = 2
我希望它返回posts
的所有记录,其中following
有记录WHERE f.from = 2 AND f.to = p.uid
以及p.uid = 2
的所有记录。
如果我先检查存在,则只返回与exists匹配的记录。如果我只交换匹配p.uid = 2
匹配的记录。
答案 0 :(得分:0)
您可以使用count代替:
SELECT
*
FROM
posts p
WHERE
(SELECT count(*) FROM following f WHERE f.from = 2 AND f.to = p.uid) > 0
OR p.uid = 2
您怎么看?
答案 1 :(得分:0)
另一个问题:
SELECT P.*
FROM POSTS P
LEFT JOIN FOLLOWING F ON F.to=P.uid
WHERE P.uid=2 OR F.from=2
如果需要,您可以在select子句中添加distinct