【发布时间】:2020-08-09 15:26:19
【问题描述】:
我有一个包含project, keyphrase, article, and category 表的数据库。项目可以有多个关键词和多个类别,文章也可以。所以我对每个关系都有各自的连接表。
我有一个查询,可以找到与特定项目(即 26 篇)共享关键词和类别的所有文章。
SELECT DISTINCT article.id, article.summary
FROM article, articles_categories, articles_keyphrases
WHERE id = articles_categories.article_id AND id = articles_keyphrases.article_id
AND category_id IN (SELECT category_id FROM projects_categories WHERE project_id = 26)
AND keyphrase_id IN (SELECT keyphrase_id FROM projects_keyphrases WHERE project_id = 26)
我正在尝试寻找一种不同的方式来编写它,以便没有任何子查询。这主要只是我的一个学习练习,因为我真的很想看到这个查询的不同方法。
【问题讨论】:
-
子查询是高效的
-
@Andronicus 我知道。这是一个学习练习。我并不希望一定要提高性能。
-
summary列驻留在哪个表中? -
@Andronicus
id和summary都来自article -
Travis 你试图做的是对数据库的过度杀伤(它不是正确使用连接)
标签: sql database postgresql subquery relational-database