dpict99695329 2016-12-28 09:10 采纳率: 100%
浏览 3059

如何在Golang Gorm中执行嵌套查询

I want to execute a query like below in golang gorm:

select * from MY_TABLE where MY_FIELD in (select max(MY_FIELD) as MY_FIELD from MY_TABLE group by ANOTHER_FIELD)

Is there a way besides raw query in gorm?

  • 写回答

1条回答 默认 最新

  • dongxian7194 2018-01-02 16:57
    关注

    You can do this by building up your query. Check out this example:

    func FindProspects(categories *string, cities *string, hasEmail *bool, hasContactperson *bool, limit int64, offset int64) []*gModels.Prospect {
        var prospects []*gModels.Prospect
    
        query := env.DB().Table("prospects").Select("prospects.id, prospects.name")
    
        if categories != nil {
            query = query.Joins("JOIN prospect_categories ON prospect_categories.prospect_id = prospects.id").Where("prospect_categories.category_name IN (?)", strings.Split(*categories, ","))
        }
    
        if cities != nil {
            query = query.Where("prospects.city IN (?)", strings.Split(*cities, ","))
        }
    
        if hasEmail != nil && *hasEmail == true {
            query = query.Where("prospects.id IN (SELECT emails.prospect_id FROM emails WHERE emails.prospect_id = prospects.id)")
        }
    
        if hasContactperson != nil && *hasContactperson == true {
            query = query.Where("prospects.id IN (SELECT contact_people.prospect_id FROM contact_people WHERE contact_people.prospect_id = prospects.id)")
        }
    
        query = query.Order("prospects.name ASC")
    
        query.Limit(int(limit)).Offset(int(offset)).Find(&prospects)
    
        return prospects
    }
    

    Hope this helps.

    评论

报告相同问题?

悬赏问题

  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计