SQL新手求助:如何通过sites_plugins关联表提取多表指定数据
如何通过sites_plugins关联表提取指定数据
作为SQL新手,你需要利用**表连接(JOIN)**关联三个表,从sites和plugins中提取目标字段,同时带上sites_plugins里的同步时间。
核心SQL语句
SELECT sites.description, plugins.fullName, plugins.currentVersion, COALESCE(sites_plugins.syncedAt, 'NULL') AS syncedAt FROM sites_plugins INNER JOIN sites ON sites_plugins.siteId = sites.id INNER JOIN plugins ON sites_plugins.pluginId = plugins.id;
语句说明
表连接逻辑:
sites_plugins是关联sites和plugins的中间表,通过siteId匹配sites表的id,pluginId匹配plugins表的id,确保数据是一一对应的关联记录。- 使用
INNER JOIN只会返回三个表中存在匹配关系的数据,也就是实际绑定了插件的站点记录。
字段处理:
- 直接选择你需要的四个字段:
sites.description(站点名称)、plugins.fullName(插件全名)、plugins.currentVersion(插件当前版本)、sites_plugins.syncedAt(同步时间)。 - 用
COALESCE函数把syncedAt中的NULL值转换成字符串"NULL",和你期望的输出格式一致。
- 直接选择你需要的四个字段:
实际查询结果
根据你提供的插入数据,执行上述SQL后会得到以下结果(按你示例的格式整理):
[ ["Facebook", "Yoast SEO", "16.8", "NULL"], ["Facebook", "Akismet", "4.1.10", "2021-07-01 10:00:00"], ["Amazon", "Akismet", "4.1.10", "NULL"], ["Amazon", "Contact Form 7", "7.5.4.2", "NULL"], ["Amazon", "Wordfence Security", "7.5.4", "2021-06-15 12:00:00"] ]
关于你给出的示例说明
你提到的["Amazon", "Jetpack", "16.8", "NULL"]在现有数据中不存在——Amazon(siteId=2)并没有关联Jetpack插件(pluginId=2),如果需要这条数据,你需要先在sites_plugins表中插入对应的关联记录。
内容的提问来源于stack exchange,提问作者Kacper Łęczyński
相关产品推荐
相关产品推荐

