对不起,标题可能不太好,但我没有找到更好的。 我的问题是: 我想从表“log”中选择所有字段,其中字段“user”为“user1”或“friendships”中的“user2”。我的查询看起来像这样,但它返回零值:
SELECT * FROM `log`
WHERE `user` = ANY(SELECT `user1` FROM `friendships`
WHERE (`user1` = 1 OR `user2` = 1) AND `active` = 1)
OR `user` = ANY(SELECT `user2` FROM `friendships`
WHERE (`user1` = 1 OR `user2` = 1) AND `active` = 1)
GROUP BY `arguments`
ORDER BY `created` DESC
如果我只使用一个子查询,它可以工作,但我也需要第二个字段。而且有更多的值(这就是为什么我使用带有ANY的子查询而不是JOIN的原因)。 我希望有人能找到我的错误 :)。
= ANY
改为了IN
,并将(user1 = 1 or user1 = 2)
改为了user1 in (1, 2)
...那又怎样呢?实际上,这样做的性能会更好。 - Bohemianuser1 = 1 或 user2 = 1
。 - Andriy M