You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite多表JOIN实现:根据运动名称查询对应标签名称

根据运动名称查询对应标签列表

你可以通过两次JOIN关联三个表,直接获取指定运动的标签名称,基础查询语句如下:

SELECT tags.name
FROM exercises
JOIN exercises_tags ON exercises.id = exercises_tags.id_exercise
JOIN tags ON exercises_tags.id_tag = tags.id
WHERE exercises.name = 'squat';

语句逻辑说明:

  • 第一次JOIN通过运动ID,将exercises表和exercises_tags关联,找到目标运动对应的所有标签ID
  • 第二次JOIN通过标签ID,将exercises_tags表和tags关联,把标签ID转换为可读的标签名称
  • 通过WHERE子句指定要查询的运动名称(比如示例中的squat)

如果需要将结果合并为一个类似['legs', 'quads']的列表格式,不同数据库有对应的聚合函数:

  • MySQL/MariaDB 使用GROUP_CONCAT:
SELECT GROUP_CONCAT(tags.name SEPARATOR ', ') AS tag_list
FROM exercises
JOIN exercises_tags ON exercises.id = exercises_tags.id_exercise
JOIN tags ON exercises_tags.id_tag = tags.id
WHERE exercises.name = 'squat'
GROUP BY exercises.id;

返回结果为legs, quads,可在应用层进一步处理成数组格式。

  • PostgreSQL 使用STRING_AGG:
SELECT STRING_AGG(tags.name, ', ') AS tag_list
FROM exercises
JOIN exercises_tags ON exercises.id = exercises_tags.id_exercise
JOIN tags ON exercises_tags.id_tag = tags.id
WHERE exercises.name = 'squat'
GROUP BY exercises.id;

内容的提问来源于stack exchange,提问作者Abel Gutiérrez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 17:17:45