这个问题建立在active record where method and not的基础上
Item.where("color != ?", 'red')
或带有.where.not
的模拟程序不返回零值。我如何查询,以包括这些以及?
发布于 2018-04-13 16:58:01
根本的问题是SQL数据库如何使用NULL进行比较,而不是Rails或ActiveRecord如何工作。如果您想要颜色为NULL的记录,则必须显式地将它们包含在类似where color IS NULL
的内容中。NULL不被认为是“非红色”。最终,为了得到您想要的结果,您需要在SQL中使用一个or
来涵盖这两种情况。
在ActiveRecord中,您需要这样做:
Item.where("color != ? or color is null", 'red')
你也可以这样做:
Item.where("color != ?", 'red').or(Item.where(color: nil))
https://stackoverflow.com/questions/49821639
复制相似问题