此查询获取与其他新闻文章类似标记的新闻文章。我是否可以消除其中一个我没有看到的子查询?
SELECT id,
title,
comment_count
FROM NEWS
WHERE (franchise_id = 1 OR franchise_id = 0)
AND draft = 0
AND id != 459
AND id IN (SELECT news_id
FROM news_tag_association
WHERE tag_id IN (SELECT tag_id
FROM news_tag_association
WHERE news_id = 459))
LIMIT 0, 5;
最佳答案
是的,没有 GROUP BY 或类似的东西,所以你可以使用普通的自连接:
SELECT
id, title, comment_count
FROM news
JOIN news_tag_association n2t1 ON (news.id = n2t1.news_id)
JOIN news_tag_association n2t2 ON (n2t1.tag_id = n2t2.tag_id)
WHERE franchise_id IN (0, 1)
AND draft = 0
AND id != 459
AND n2t2.news_id = 459
LIMIT 0,5;
关于sql - 帮助优化子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4116526/