我刚刚加入,所以我不确定是否可以。我一直在谷歌搜索并尝试一些事情。
我需要的:
在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/