如何根据categories表指定cat_id查询courses表中的对应课程?
你的需求可以通过两种方式实现,取决于你是否需要关联分类表的信息:
- 仅获取课程信息(无需关联分类表)
如果只是要提取courses表中对应指定cat_id的课程,不需要关联categories表,直接查询即可,这样更高效:
SELECT course_name, course_description FROM courses WHERE cat_id = 'ScTh01';
这条语句会直接返回cat_id为ScTh01的所有课程(也就是示例中的Python和Java)。
- 关联分类表查询(验证分类有效性或获取分类信息)
如果需要确保目标cat_id在categories表中存在,或者要同时获取分类的相关字段(比如分类名称),可以保留关联查询,但可以简化WHERE条件或使用表别名让语句更清晰:
SELECT c.course_name, c.course_description, cat.cat_name, cat.cat_description FROM courses c INNER JOIN categories cat ON c.cat_id = cat.cat_id WHERE cat.cat_id = 'ScTh01';
这里用表别名c和cat简化了语句,同时可以按需选择要查询的字段。
你原来的SQL语句本身是可以正常运行的,但存在冗余——因为你已经通过courses.cat_id过滤,关联categories表在这里没有额外作用(除非你需要返回分类表的字段),所以可以根据实际需求选择上面两种方案之一。
内容的提问来源于stack exchange,提问作者irah22
相关产品推荐
相关产品推荐

