gpt4 book ai didi

postgresql - 如何查找从 db.Query postgres 返回的行数

转载 作者:IT王子 更新时间:2023-10-29 01:41:55 25 4
gpt4 key购买 nike

我正在使用 goLang lib/pq 驱动程序并尝试从数据库中获取行。

rows, err := db.Query("select id, name from mytable limit 5")

我想要一个 if else 子句来检查结果集中是否有行,我这样做了:

if(!rows.Next()){
log.Printf("no rows returned")
} else {
log.Printf("rows returned")
}

但这总是少返回 1 条记录,我假设它是因为 if 子句,它会跳过一条记录,因为一旦我删除 if 子句,我就会得到所有记录正确。如何在不执行另一个查询的情况下知道从选择查询返回的行数?

最佳答案

当您使用 Rows 时对象,没有任何辅助方法可以在一步中为您提供总行数。

一个简单但较慢的解决方案是使用增量变量来迭代所有结果以存储行数:

// error handling omitted
rows, _ := db.Query("SELECT * FROM table")
defer rows.Close()

counter := 0
for rows.Next() {
// you can even scan+store the result if you need them later
counter++
}

fmt.Println("we have", counter, "rows")

否则,如果您的目标只是“计算”行数,请对 QueryRow 使用更专用的查询

// error handling omitted
var counter int

db.QueryRow("SELECT count(*) FROM table").Scan(&counter)

fmt.Println("we have", counter, "rows")

关于postgresql - 如何查找从 db.Query postgres 返回的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39783780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com