如何在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
相关产品推荐
相关产品推荐

