我有一個表叫inbox_messages
具有以下行:奇怪的行爲,而使用SQL條件
user_id message_id
======= ==========
4 8
4 1
4 7
0 9
0 10
0 11
0 12
表映射到以下模式:
class InboxMessage < ActiveRecord::Base
end
當我調用find
方法與IN
caluse,我得到不同的結果集取決於參數的位置 。
InboxMessage.find(:all, :conditions => [ "user_id IN (?)", "0,4"]) # 8 rows
InboxMessage.find(:all, :conditions => [ "user_id IN (?)", "4,0"]) # 3 rows
上述第二個電話,返回3行,而不是8其他方案正常工作,即
InboxMessage.find(:all, :conditions => [ "user_id IN (0, 4)" ]) # 8 rows
InboxMessage.find(:all, :conditions => [ "user_id IN (4, 0)" ]) # 8 rows
InboxMessage.find(:all, :conditions => [ :user_id => [0, 4] ]) # 8 rows
InboxMessage.find(:all, :conditions => [ :user_id => [4, 0] ]) # 8 rows
我認爲你是對的。混亂的原因是,當我更改綁定參數順序時,我得到了預期的結果。我設法看到了SQL,並且它是錯誤的(如您注意到的)。 (PS:我使用「SQL_DISPLAY」:http://github.com/radar/sql_display插件列出SQL) – 2010-02-10 04:13:54