英文:
How to identify the last row in the result set postgres?
问题
我正在使用Postgres 9.5,并使用golang库lib/pq与数据库进行交互。我执行了一个返回多行的select查询,然后使用for rows.Next()
进行迭代。有没有办法在最后一条记录之前停止迭代?如果是最后一条记录,我想在控制台上打印其他内容。类似以下的代码:
for rows.Next() {
var id string
err = rows.Scan(&id)
if err != nil {
log.Printf("Error in rows.Scan: %s\n", err)
}
if (不是最后一行) {
fmt.Println(id + "我不是最后一行")
} else {
fmt.Println(id + "我是最后一行")
}
}
英文:
I am using Postgres 9.5 with and using golang library lib/pq to interact with database. I execute a select query which returns multiple rows and then I iterate using for rows.Next()
Is there anyway I ca stop before the lat record. I want to print something else on console if its the last record. Something like the following:
for rows.Next() {
var id string
err = rows.Scan(&id)
if err != nil {
log.Printf("Error in rows.Scan: %s\n", err)
}
if (row is not last) {
fmt.Println(id + "I am not last")
} else {
fmt.Println(id + "I am last")
}
}
答案1
得分: 4
你可以在Go语言中实现类似do-while循环的功能。
notLast := rows.Next()
for notLast {
//... rows.Scan
notLast = rows.Next()
if notLast {
fmt.Println(id + "I am not last")
} else {
fmt.Println(id + "I am last")
}
}
在这段代码中,notLast
变量用于判断是否还有下一行数据。在循环开始时,首先检查是否有下一行数据,如果有,则执行循环体内的代码,并更新notLast
的值。如果没有下一行数据,则退出循环。根据notLast
的值,打印不同的输出信息。
英文:
You can impliment something like a do while loop in go.
notLast := rows.Next()
for notLast {
//... rows.Scan
notLast = rows.next()
if notLast {
fmt.Println(id + "I am not last")
} else {
fmt.Println(id + "I am last")
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论