第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

后gresql + 帶有組的 gorm 復(fù)雜分頁

后gresql + 帶有組的 gorm 復(fù)雜分頁

肥皂起泡泡 2022-09-12 16:41:03
我有帶有GroupId列的表,并且可能有大量的行。有沒有辦法按組對數(shù)據(jù)進(jìn)行分頁?例如,獲得前10組,然后是接下來的10組等?表將具有此結(jié)構(gòu)(默認(rèn)情況下不排序) - 抱歉格式不正確,由于某種原因它不起作用,但我認(rèn)為它是可見的科爾1科爾2組標(biāo)識數(shù)據(jù) A傅11數(shù)據(jù) B福21數(shù)據(jù) C傅32...那么有沒有辦法有效地獲得拳頭10組的行,然后是接下來的10組等,每組的行數(shù)不是固定的?假設(shè)有數(shù)百萬行,組可以是任意數(shù)字。
查看完整描述

1 回答

?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個贊

它并沒有真正分頁,而只是通過有界標(biāo)識符()查詢數(shù)據(jù)。如果您知道組 ID,并且它們是連續(xù)的,則可以執(zhí)行類似操作。這是使用純Go完成的,您可以輕松地將gorm與此合并。GroupId

去游樂場

package main


import (

    "fmt"

)


func main() {

    for _, q := range queries() {

        fmt.Println(q)

    }

}


func queries() (out []string) {

    groups := []int{10, 20, 30, 40, 50, 60, 70, 80, 90, 100}

    for i := 0; i < len(groups); i++ {

        var lower, upper int = 0, 0

        if i != 0 {

            lower = groups[i-1]

        }

        upper = groups[i]

        q := fmt.Sprintf("SELECT * FROM MyTable WHERE GroupId >= %v AND GroupId < %v", lower, upper)

        out = append(out, q)

    }

    return

}

對打印出應(yīng)運(yùn)行以獲取每個組中的所有結(jié)果的每個查詢的調(diào)用。例如:queries


SELECT * FROM MyTable WHERE GroupId >= 0 AND GroupId < 10

SELECT * FROM MyTable WHERE GroupId >= 10 AND GroupId < 20

SELECT * FROM MyTable WHERE GroupId >= 20 AND GroupId < 30

SELECT * FROM MyTable WHERE GroupId >= 30 AND GroupId < 40

SELECT * FROM MyTable WHERE GroupId >= 40 AND GroupId < 50

SELECT * FROM MyTable WHERE GroupId >= 50 AND GroupId < 60

SELECT * FROM MyTable WHERE GroupId >= 60 AND GroupId < 70

SELECT * FROM MyTable WHERE GroupId >= 70 AND GroupId < 80

SELECT * FROM MyTable WHERE GroupId >= 80 AND GroupId < 90

SELECT * FROM MyTable WHERE GroupId >= 90 AND GroupId < 100

到目前為止,我們假設(shè)您已經(jīng)確切地知道要查詢的“組存儲桶”。相反,如果我們假設(shè)我們知道有多少個順序組()以及每個查詢想要多少個組(存儲桶大小),我們可以輕松創(chuàng)建一個函數(shù)來為我們提供應(yīng)該查詢的存儲桶。ns


func groups(n, s int) (out []int) {

    for i := 0; i <= n; i++ {

        if i == 0 {

            continue

        }

        if i%s == 0 || i == n {

            out = append(out, i)

        }

    }

    return

}


查看完整回答
反對 回復(fù) 2022-09-12
  • 1 回答
  • 0 關(guān)注
  • 124 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號