我的程序中有很多新数据,我需要快速将它们与表中的现有数据相关联,以便随后过滤出approved: false
个数据。
在我想到的情况下,这里简直是精炼:
给出以下内容:
const list = [{id: 1}, {id: 2}]
// assume ~10K items, not necessarily 1-1 with the MyTable's rows.
INSERT INTO MyTable (id, approved) VALUES (1, TRUE), (2, FALSE), (3, TRUE);
-- assume ~10K rows
如何实现?
const result = [{id: 1, approved: true}, {id: 2, approved: false}] // only ids from list
我在问从给定的结果中得到什么SQL查询。
答案 0 :(得分:0)
这个问题是SQL WHERE ID IN (id1, id2, …, idn)的特定实例,因此答案很简单,就是将ID转储到语句中:
const idsString = list.map(item => item.id).join() // sanitize!
const result = sql("SELECT id, approved FROM MyTable WHERE id IN (" + idsString + ");")