我刚刚加入,所以我不确定是否可以。我一直在谷歌搜索并尝试一些事情。

我需要的:

在user2data.user_id ='X'的情况下,选择不存在相应的user2data.user_id的data.id

令人兴奋吧? :D

什么有效:

SELECT * FROM data WHERE NOT EXISTS (SELECT * FROM user2data WHERE user2data.user_id=1 AND user2data.data_id=data.id) LIMIT 100;


但是,即使所有3列都已建立索引,它的速度也很慢。我从另一个SO答案为此尝试了一个OUTER JOIN,但是它比上面的还要慢。我需要一个INNER JOIN。

请让我知道这是否确实可行,或者是否存在利用索引的替代方法。

谢谢,最好

最佳答案

可以使用左联接

SELECT *
FROM data WHERE
LEFT JOIN user2data ON (  user2data.user_id=1 AND user2data.data_id=data.id )
where user2data.data_id is null
LIMIT 100;

关于mysql - 将MySQL NOT EXISTS转换为INNER JOIN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39255033/

10-13 09:49