Mysql2 ::错误:操作数应包含1列

时间:2013-05-09 08:54:11

标签: sql ruby-on-rails

我试图在rails视图文件中执行SQL查询。这是查询

scount=SubUrl.where("main_url_id=? and pc > ? and sub_id = ? and b_id > ? and dd = ?", result.id,0,@subids,0,1) %> 

但是我收到了以下错误。

Mysql2 ::错误:操作数应包含1列:SELECT suburls。* FROM suburls WHERE(main_url_id = 16和product_count> 0和sub_id = 53,112,110,111和b_id> 0和dd = 1)

我认为是因为sub_id有很多id。如何一次分配一个sub_id并获得所需的scount

3 个答案:

答案 0 :(得分:2)

您可以使用IN代替=吗?

scount=SubUrl.where("main_url_id = ? AND pc > ? AND sub_id IN (?) "\
                    "AND b_id > ? AND dd = ?", result.id,0,@subids,0,1)

答案 1 :(得分:0)

尝试这样的事情:

@scount = []

@subids.each do |subid|
@scount << SubUrl.where("main_url_id=? and pc > ? and sub_id = ? and b_id > ? and dd = ?", result.id,0,subid,0,1)
end

答案 2 :(得分:0)

我曾经遇到过同样的错误。它是由使用“&gt;”的日期比较引起的使用一个日期而不是单个日期的变量。我对这个问题的建议是仔细查看你的查询,并确保你传递给它的值是它们应该是什么。

编辑:虽然我的回答没有回答op的具体问题,谷歌搜索mysql错误导致我这个问题。这里的基本概念是mysql操作数被错误地使用。在op的情况下,'in'操作数需要与括号中的值列表一起使用。 (他们误用了“=”运算符)