postgresql - 如何计算查询中的行数?
问题描述
我有一个问题如何计算查询中的行数。如下例
rows, err := repo.DBConn.Query("SELECT init_id, email, address, phone, name, zipcode , about,backgroundimg_url,icon_url FROM public.initiator where init_id in (select init_id from public.events where request_id=$1)",request_id)
解决方案
如果您不关心行的实际内容,请使用选择计数查询。
var count int
row := repo.DBConn.QueryRow("SELECT COUNT(*) FROM public.initiator where init_id in (select init_id from public.events where request_id=$1)",request_id)
if err := row.Scan(&count); err != nil {
return err
}
如果您关心内容,则将行扫描成一个切片,然后使用该len
函数获取其长度。
rows, err := repo.DBConn.Query(`SELECT init_id, email, address, phone, name, zipcode , about,backgroundimg_url,icon_url FROM public.initiator where init_id in (select init_id from public.events where request_id=$1)",request_id`)
if err != nil {
return err
}
defer rows.Close()
var inits []*Initiator
for rows.Next() {
ini := new(Initiator)
if err := rows.Scan(&ini.InitID, &ini.Email, ...); err != nil {
return err
}
inits = append(inits, ini)
}
if err := rows.Err(); err != nil {
return err
}
count := len(inits)
如果您正在进行分页,而您想要的只是每个请求 20 行,但您还想要满足 WHERE 子句的总行数,那么您需要执行两个查询,即检索 20 行的查询和一个计算总行数的。你可以结合上面的例子来做到这一点。
推荐阅读
- nginx - 如何设置 Google VM(实例分组)、https 负载均衡 w/CDN,以便后端解析域?
- java - 如何在java中调用带有另一个类的参数的方法?
- python - 有没有一种方法可以在训练期间找到 Tensorflow/Keras 层输入的最小值、最大值?
- r - 在 R 中抓取时,如何修复“10000 毫秒后连接超时”?
- jmeter - 如何在 10 分钟后退出 while 控制器
- twilio - 从硬电话更新正在进行的 Twilio 呼叫
- reactjs - 如何隐藏/显示被 ReactJS 中不同视图重用的组件的内容
- python - 从 findContours 中删除某些点以从 fitEllipse 中获得更好的结果
- java - 无法通过 Web 服务连接数据库
- c++ - 多次运行程序,同时保持一个进程