我有下面列出的3个表:
Blog BlogArticle Article ---- ----------- ------- id id------blog_id -id title article_id__/ title
该SQL描述了我想要的:
SELECT * FROM `article` WHERE `article`.`id` NOT IN ( SELECT CONCAT(`blog_article`.`article_id`) FROM `blog_article` WHERE `blog_article`.`blog_id` = 1 -- example value )
问题是,在这种情况下,我有一个很大的NOT IN值,据我所知它将影响服务器性能(我不确定,因为我从未尝试对其进行基准测试或Google评估)。有什么建议吗?
试试这个 :
SELECT * FROM `article` LEFT JOIN `blog_article` ON CONCAT(`blog_article`.`article_id`) = `article`.`id` AND `blog_article`.`blog_id` = 1 -- example value WHERE `blog_article`.`article_id` is null --replace the not in