2016-12-28 33 views
3

我想在golang格姆執行類似下面的查詢嵌套查詢:如何執行在golang格姆

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

是否有除了在格姆原始查詢的方法嗎?

+0

會很高興有數據類型結構 – kenfire

回答

0

你可以通過建立你的查詢來做到這一點。看看這個例子:

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 
} 

希望這會有所幫助。