我正在嘗試在go-pg庫中為 golang使用.UnionAll方法。 var model []Customer q0 := db.Model(&model).Where("name = ?", name0).Limit(4) q1 := db.Model(&model).Where("name = ?", name1).Limit(3) var result []Customer if err := q0.UnionAll(q1).Limit(1).Select(&result); !as.NoError(err) { return }此代碼生成查詢:(SELECT "customer"."id", "customer"."name" FROM customers AS "customer" WHERE (name = 'customer 1deificatory zonoid reprepare alacrify serenissime') LIMIT 1) UNION ALL (SELECT "customer"."id", "customer"."name" FROM customers AS "customer" WHERE (name = 'customer 2fordless ferroboron radiability dandizette smutch'LIMIT 3))但我希望它是:(SELECT "customer"."id", "customer"."name" FROM customers AS "customer" WHERE (name = 'customer 1deificatory zonoid reprepare alacrify serenissime') LIMIT 4) UNION ALL (SELECT "customer"."id", "customer"."name" FROM customers AS "customer" WHERE (name = 'customer 2fordless ferroboron radiability dandizette smutch')LIMIT 3)LIMIT 1那么如何使用 go-pg 來獲取我期望的原始 SQL 查詢呢?問題是由于某種原因我不能將Limit 1表達式應用于整個查詢。另外,我的第一個成員Limit 4沒有正確應用。union all我的整個代碼在這里。
1 回答

慕尼黑的夜晚無繁華
TA貢獻1864條經驗 獲得超6個贊
我相信這個查詢對你有用。
if err := db.Model().With("union_q", q0.UnionAll(q1)).Table("union_q").Limit(1).Select(&result); !as.NoError(err) {
return
}
該查詢并不完全是您想要的,據我所知,當前版本的 go-pg 無法生成該查詢。但是這個查詢正是你想要的。
- 1 回答
- 0 關注
- 162 瀏覽
添加回答
舉報
0/150
提交
取消