Golfing postgres 我怎样才能从查询中返回计数

标签 go

我是 Golang 的新手,正在使用 postgres 的 PQ 包。我想做的是防止重复的电子邮件,所以我有一个查询来检查用户电子邮件是否已经在数据库中

check_duplicate_emails, err := db.Prepare("select count(*) from profiles where email=$1")
    rows, err := check_duplicate_emails.Exec(email)

        if rows != nil {
        fmt.Fprintf(w,"Duplicate Email")
    } 

上面就是我的代码,我怎样才能让它像这样检查

if rows >0 { ...}

当我尝试这样做时,我得到了错误

invalid operation: rows > 0 (mismatched types sql.Result and int)

我如何解决这个问题,因为我现在一直在四处寻找解决办法。

最佳答案

这里发生的事情是你告诉 Go 你的查询不会返回任何行(参见 docs for Exec())

您可能应该使用其中之一:

  • QueryRow 的组合和 Scan() (QueryRow 中的例子是一个很好的例子),或者
  • 一个“从……哪里……选择一些东西”没有带有Query 的count(*) 查询并查看 rows.Next() 以查看是否有第一行。

关于Golfing postgres 我怎样才能从查询中返回计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39736530/

相关文章:

google-app-engine - 为什么调用此方法会导致我的应用超出免费配额?

algorithm - Go 程序不显示分配给变量的 Sliced Int 的期望结果

Golang 枸杞 : How to serve static content and api at the same time

Golang tcp客户端服务器程序

go - 如何将 go 代码添加到现有项目中

go - 如何在结构中创建可为空的字段

go - 同时来自列表的多个随机元素

GORM FirstOrCreate 从不更新 bool 字段

c++ - 为什么将 float64 转换为 int32 在 Go 中会给出负数?

go - 使用 time.Unix() 从 float 解析带小数的 unix 时间戳?