通过中间表基于主题关联类别筛选结果
根据主题筛选关联类别数据的解决方案
嘿,针对你这个根据主题筛选关联类别的需求,我给你整理了靠谱的SQL查询方案,完全适配你提到的三张表结构:
首先咱们明确下三张表的关联逻辑:topic和category通过中间表(我暂时叫它topic_category,你换成实际表名就行)建立一对多关系,中间表的topic_id关联主题表的id,category_id关联类别表的id。
两种常用查询方式:
按主题名称查询:如果你知道目标主题的名称(比如你说的「热门主题公园的游乐设施与演出」),用这个SQL:
SELECT c.id, c.name FROM topic t INNER JOIN topic_category tc ON t.id = tc.topic_id INNER JOIN category c ON tc.category_id = c.id WHERE t.name = '热门主题公园的游乐设施与演出';按主题ID查询:如果已经拿到主题的ID(比如假设该主题ID是1),这种方式查询效率更高:
SELECT c.id, c.name FROM category c INNER JOIN topic_category tc ON c.id = tc.category_id WHERE tc.topic_id = 1;
实用扩展技巧:
- 要是想同时展示主题和类别的完整信息,把SELECT语句改成
SELECT t.id AS topic_id, t.name AS topic_name, c.id AS category_id, c.name AS category_name就行; - 担心结果有重复数据?在SELECT后面加个
DISTINCT,比如SELECT DISTINCT c.id, c.name; - 想让类别按名称排序?在SQL末尾加上
ORDER BY c.name ASC(升序)或者ORDER BY c.name DESC(降序)。
内容的提问来源于stack exchange,提问作者Rummy
相关产品推荐
相关产品推荐

