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

如何通过单条SQL查询获取每个图书集合的标题与作者合并结果?

解决方案

你需要通过分组聚合将同一图书集合的标题和作者合并到一行。核心思路是用MAX()(或MIN())函数提取每个分组下有效的标题和作者值,再按collection_id分组。

修改后的SQL查询如下:

SELECT
    c.collection_id,
    MAX(CASE WHEN cd.detail_type = 'title' THEN cd.detail_value END) AS title,
    MAX(CASE WHEN cd.detail_type = 'author' THEN cd.detail_value END) AS author
FROM
    collections c
LEFT JOIN
    collection_details cd ON c.collection_id = cd.collection
WHERE
    cd.detail_type IN ('title', 'author')
GROUP BY
    c.collection_id;

补充说明:

  • MAX()函数会忽略NULL值,因此每个collection_id分组下,只会保留有效的标题和作者值。
  • 使用IN ('title', 'author')替代OR,逻辑更清晰且性能更优。
  • 如果需要保留没有标题或作者的图书集合(即使这两个字段为NULL),可以去掉WHERE条件,确保collections表的所有记录都被返回。

如果你的数据库支持PIVOT语法(如SQL Server、Oracle),也可以用透视表实现,但上述CASE+聚合的写法兼容性更强,适用于大多数关系型数据库(MySQL、PostgreSQL、SQLite等)。

内容的提问来源于stack exchange,提问作者Switch88

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 02:25:03