续集SELECT count(id)FROM tablename WHERE username =" alpha"

时间:2016-10-18 10:55:15

标签: ruby sequel

我似乎无法正确查询此查询。续集实施:

SELECT count(id) FROM users WHERE username = "alpha" AND status = "new"

这是我到目前为止所拥有的:

db = Sequel.connect('postgres://me:pw@0.0.0.0:5432/dbname)
u = db[:users]
puts "Total users: #{u.count}"  # this is correct
puts db.where(:username => "alpha", :status => "new").count

我尝试了各种直接SQL,但似乎也没有用。它闻起来像这是补救,但连接很好,我可以复制确切的SQL,它不会回来相同。

1 个答案:

答案 0 :(得分:0)

您忘了选择表格。你想要这个:

db[:users].where(username:'alpha', status:'new').count

对于SQLite3,这会生成查询:

SELECT count(*) AS 'count'
FROM `users`
WHERE ((`username` = 'alpha')
  AND  (`status` = 'new'))
LIMIT 1

您应该收到的错误消息是:

NoMethodError: undefined method `where' for #<Sequel::SQLite::Database: ...>

如果你看到这个错误并阅读它,它应该让你知道调用db.where是不对的。

除了使用原生续集DSL工作外,您还可以在续集中run raw sql commands