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

如何在GORM的SELECT语句中拼接不同表的两列数据

解决方案

GORM本身没有字段拼接的专属方法,直接在Select语句里用对应数据库的字符串拼接函数就能实现需求,以下是主流数据库的具体实现:

MySQL/MariaDB 版本

用CONCAT函数拼接字符串,搭配FORMAT把价格格式化为两位小数:

err = m.Database().Table("host").
    Select(""+
        "host.id, "+
        "CONCAT('R$ ', FORMAT(table1.price, 2), ' - ', table2.domain) as price_domain, "+
        // 保留其他需要查询的字段
    ).
    // 补充JOIN关联、查询条件等逻辑(比如JOIN table1 ON ...、JOIN table2 ON ...)
    Error

PostgreSQL 版本

可以用CONCAT函数,结合TO_CHAR格式化价格:

err = m.Database().Table("host").
    Select(""+
        "host.id, "+
        "CONCAT('R$ ', TO_CHAR(table1.price, '999999.99'), ' - ', table2.domain) as price_domain, "+
        // 保留其他需要查询的字段
    ).
    // 补充JOIN关联、查询条件等逻辑
    Error

SQL Server 版本

使用CONCAT函数,通过FORMAT格式化价格:

err = m.Database().Table("host").
    Select(""+
        "host.id, "+
        "CONCAT('R$ ', FORMAT(table1.price, 'N2'), ' - ', table2.domain) as price_domain, "+
        // 保留其他需要查询的字段
    ).
    // 补充JOIN关联、查询条件等逻辑
    Error

关键提示

  • 务必确保table1和table2已通过JOIN语句与host表关联,否则会出现字段不存在的错误
  • 拼接后的字段用as price_domain指定别名,方便后续映射到返回结构体的对应字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:36:10