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

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

如何顯示查詢結果計數

如何顯示查詢結果計數

Go
暮色呼如 2023-06-05 19:34:02
我正在做一個 RESTful API 項目,我的代碼可以用 gorm 查詢,我的查詢是這樣的countSequenceId := db.Debug().Raw("SELECT COUNT (*) FROM SMSBlast2").Scan(&smsblast1)。我得到了結果[1 rows affected or returned],這意味著成功地計算了我在數據庫中的所有行,但我想顯示結果result count = 10,但是如何?package mainimport (    "encoding/json"    "fmt"    "github.com/gorilla/mux"    "github.com/jinzhu/gorm"    _ "github.com/jinzhu/gorm/dialects/mssql"    "log"    "net/http"    "strconv"    "time")type SMSBlast struct {    SequenceID   int `gorm:"primary_key";column:"SequenceID"`    MobilePhone string `gorm:"column:MobilePhone"`    Output  string  `gorm:"column:Output"`    WillBeSentDate *time.Time `gorm:"column:WillBeSentDate"`    SentDate *time.Time `gorm:"column:SentDate"`    Status *string `gorm:"column:Status"`    DtmUpd time.Time `gorm:"column:DtmUpd"`}func (SMSBlast) TableName() string {    return "SMSBlast2"}func allSMSBlasts(w http.ResponseWriter, r *http.Request){    db, err := gorm.Open("mssql", "sqlserver://sa:@localhost:1433?database=CONFINS")    if err != nil{        panic("failed to connect database")    }    defer db.Close()    var smsblasts []SMSBlast    db.Debug().Find(&smsblasts)    fmt.Println("{}",smsblasts)    json.NewEncoder(w).Encode(smsblasts)}func insertSMSBlast(w http.ResponseWriter, r *http.Request){    fmt.Println("New Insert Created")    db, err := gorm.Open("mssql", "sqlserver://sa:@localhost:1433?database=CONFINS")    if err != nil{        panic("failed to connect database")    }    defer db.Close()    vars := mux.Vars(r)    mobilephone := vars["mobilephone"]    output := vars["output"]    var(        smsblast1 SMSBlast    )    countSequenceId := db.Debug().Raw("SELECT COUNT (*) FROM SMSBlast2").Scan(&smsblast1)    fmt.Println(countSequenceId)    msg, err :=  json.Marshal(countSequenceId)    if err != nil{        fmt.Println(err.Error())    }
查看完整描述

1 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

我不確定你為什么為此使用 Raw 方法,但我想指出有一個 Count 方法可以實現你想要的:

db.Where("name = ?", "jinzhu").Or("name = ?", "jinzhu 2").Find(&users).Count(&count)

//// SELECT * from USERS WHERE name = 'jinzhu' OR name = 'jinzhu 2'; (users)

//// SELECT count(*) FROM users WHERE name = 'jinzhu' OR name = 'jinzhu 2'; (count)


db.Model(&User{}).Where("name = ?", "jinzhu").Count(&count)

//// SELECT count(*) FROM users WHERE name = 'jinzhu'; (count)

我從文檔中整理了一個非常簡單的示例:


package main


import (

? ? "fmt"


? ? "github.com/jinzhu/gorm"

? ? _ "github.com/jinzhu/gorm/dialects/sqlite"

)


type Porg struct {

? ? gorm.Model

? ? Name string

}


func main() {

? ? db, err := gorm.Open("sqlite3", "test.db")

? ? if err != nil {

? ? ? ? panic("failed to connect database")

? ? }

? ? defer db.Close()


? ? // Migrate the schema

? ? db.AutoMigrate(&Porg{})


? ? // Create

? ? for i := 1; i <= 100; i++ {

? ? ? ? db.Create(&Porg{Name: "John"})

? ? }


? ? // Read

? ? var porgs []Porg

? ? var count int

? ? db.Model(&porgs).Count(&count)


? ? fmt.Println(count)

}

輸出:100


使用Model您可以指定要查詢的模型的方法,這不會直接查詢數據庫。使用db.Find(&porgs).Count(&count)實際上會向數據庫發送 2 個 SQL 查詢。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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