为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨魅力 2023-04-08 21:17:00
数据库表结构如图,一个文章可以有N个标签,标签和标签之间是树形结构。问:查询出所有tag.name='互联网' and tag.parentid='互联网'.Id 的 article.title和users.name不知道这个伪代码有没有表述清楚,就是说不只要查询出标签名称是‘互联网’的所有文章标题和用户名,还要符合‘互联网’的下一级所有标签,比如‘移动互联网’等等。
查看完整描述

2 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

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不是很熟悉,自己优化成存储过程吧。不过这个效率太差了,建议变成缓存再查询。


查看完整回答
反对 回复 2023-04-11
?
慕仙森

TA贡献1827条经验 获得超7个赞

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

查看完整回答
反对 回复 2023-04-11
  • 2 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信