关联4张表的SQL查询难题,还要尽可能考虑到性能

发布于 2022-08-24 01:09:01 字数 357 浏览 15 评论 0

数据库表结构

数据库表结构如图,一个文章可以有N个标签,标签和标签之间是树形结构。

问:查询出所有tag.name='互联网' and tag.parentid='互联网'.Id 的 article.title和users.name

不知道这个伪代码有没有表述清楚,就是说不只要查询出标签名称是‘互联网’的所有文章标题和用户名,还要符合‘互联网’的下一级所有标签,比如‘移动互联网’等等。

请教大家这条SQL语句该怎么写,数据库是SQL server。 谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉月流沐 2022-08-31 01:09:01
SELECT Title FROM Article WHERE Id IN
(SELECT ArticleID FROM Article_Tag WHERE TagID IN
(SELECT Id FROM Tag WHERE ParentId IN (SELECT Id FROM Tag WHERE Name = '互联网'))
OR TagID IN (SELECT Id FROM Tag WHERE Name = '互联网') GROUP BY ArticleID)

对SQL Server不是很熟悉,自己优化成存储过程吧。不过这个效率太差了,建议变成缓存再查询。

蓝礼 2022-08-31 01:09:01

或许拆成两次查询效率会比较好,第一次得到tag.name='互联网' and tag.parentid='互联网'的tag id,第二步再查询出满足条件的article和user。写成一条语句的话,如果系统不做优化,一个个去比较tag.name效率会比较差

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文