亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

go-pg UnionAll - 限制整個表達式

go-pg UnionAll - 限制整個表達式

Go
心有法竹 2022-06-21 16:29:50
我正在嘗試在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 無法生成該查詢。但是這個查詢正是你想要的。


查看完整回答
反對 回復 2022-06-21
  • 1 回答
  • 0 關注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號