package main import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" ) func main() { dsn := "root:bindbox2025kdy@tcp(150.158.78.154:3306)/dev_game?charset=utf8mb4&parseTime=True&loc=Local" db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{}) channelID := 3 filter := "users.channel_id = ? AND users.deleted_at IS NULL AND orders.status = 2 AND orders.actual_amount > 0 AND orders.source_type IN (1,2,3,4) AND (orders.ext_order_id = '' OR orders.ext_order_id IS NULL)" type Sample struct { ID int64 SourceType int32 ActualAmount int64 Remark string } // 一番赏 remark var ichiban []Sample db.Table("orders"). Joins("JOIN users ON users.id = orders.user_id"). Select("orders.id, orders.source_type, orders.actual_amount, orders.remark"). Where(filter+" AND orders.source_type = 4", channelID). Limit(5). Scan(&ichiban) fmt.Println("=== 一番赏 (source_type=4) remark 示例 ===") for _, s := range ichiban { fmt.Printf(" ID=%-6d amount=%-8d remark=[%s]\n", s.ID, s.ActualAmount, s.Remark) } // 翻牌 matching_game 的 issue 对应关系 type IssueActivity struct { IssueID int64 ActivityID int64 PriceDraw int64 } var ia []IssueActivity db.Table("activity_issues"). Joins("JOIN activities ON activities.id = activity_issues.activity_id"). Select("activity_issues.id as issue_id, activity_issues.activity_id, activities.price_draw"). Where("activity_issues.id IN (92, 96, 104)"). Scan(&ia) fmt.Println("\n=== 翻牌 issue → activity → price_draw ===") for _, r := range ia { fmt.Printf(" issue_id=%d → activity_id=%d → price_draw=%d\n", r.IssueID, r.ActivityID, r.PriceDraw) } }