我在Go上使用SqlBoiler向PostgreSQL數據庫發送請求,但是當嘗試按其中一個字段對數據庫進行排序時,它返回0行。首先,我運行一個計數(如下所述),如果計數返回多于或等于一行,那么我查詢數據庫中的所有結果。這將返回正確的行計數:res, _ := models.MT( Where("(mt_mas = ? or mt_mem like ?) and mt_group = ?", uint(uid), `%"`+strconv.Itoa(uid)+`"%`, bool(mt_group_bool)), ).Count(CTX, DB)這將不返回任何行,盡管查詢參數完全相同:res, _ := models.MT( Where("(mt_mas = ? or mt_mem like ?) and mt_group = ?", uint(uid), `%"`+strconv.Itoa(uid)+`"%`, bool(mt_group_bool)), OrderBy(`mt_mas`), ).Count(CTX, DB)這是我在檢查行計數后獲取所有行的方式:res, err := models.MT( Where("(mt_mas = ? or mt_mem like ?) and mt_group = ?", uint(uid), `%"`+strconv.Itoa(uid)+`"%`, bool(mt_group_bool)), OrderBy(`mt_mas`), ).All(CTX, DB)從上面的請求中讀取錯誤時,它會打印出來,一切似乎都很好。<nil>如前所述,數據庫是(版本 13.3),列如下所示:mt_mas(整數)此列保存此行所有者的 uid。mt_mem(字符變化 [1000])此列包含用戶成員 uid:s 的 JSON 列表。mt_group(布爾值)此列顯示此行是一組不。數據庫行示例:|mt_mas |mt_mem |mt_group | |:----: |:----: |:------: | |1 |{“1”, “2”} |假|
1 回答

交互式愛情
TA貢獻1712條經驗 獲得超3個贊
好的,解決方案比預期的要簡單。@Gari辛格(https://stackoverflow.com/users/5529712/gari-singh)實際上在上面的評論中指出了這一點,但我想我會在這里寫出來,這樣問題就解決了。
解決方案是干脆不對計算結果的查詢進行排序。因此,用于計數的正確代碼應僅為:
res, _ := models.MT(
Where("(mt_mas = ? or mt_mem like ?) and mt_group = ?", uint(uid), `%"`+strconv.Itoa(uid)+`"%`, bool(mt_group_bool)),
).Count(CTX, DB)
然后運行查詢以獲取具有順序的實際行,如下所示:
res, err := models.MT(
Where("(mt_mas = ? or mt_mem like ?) and mt_group = ?", uint(uid), `%"`+strconv.Itoa(uid)+`"%`, bool(mt_group_bool)),
OrderBy("mt_mas"),
).All(CTX, DB)
感謝您的幫助!:)
- 1 回答
- 0 關注
- 91 瀏覽
添加回答
舉報
0/150
提交
取消