【发布时间】:2016-06-01 09:08:33
【问题描述】:
给定一个模型 ID 数组:
ids = [1, 2, 3]
如何获取数据库中尚不存在的 id 数组?我能做到:
ids.reject { |id| Model.exists?(id: id) }
但我不想为每个 id 进行单独的数据库查询。在单个数据库查询中获取不存在的 id 的方法是什么?
【问题讨论】:
-
不确定 RoR 语法,但 SQL 方法是;创建一个包含 [1,2,3] 的数据集,然后找出目标表中不存在的数据集...
SELECT sample.* FROM (SELECT 1 AS id UNION ALL SELECT 2 AS id UNION ALL SELECT 3 AS id) sample LEFT JOIN target ON target.id = sample.id WHERE target.id IS NULL -
@MatBailie +1 提供纯 SQL 解决方案
标签: sql ruby-on-rails ruby performance activerecord