我在下面列出了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值,据我所知它会影响服务器性能(我不确定,因为我从来没有尝试过基准测试或谷歌它)。有什么建议吗?
答案 0 :(得分:2)
试试这个:
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