如何检查集合中是否有每个 id 的行?

How to check, that there are rows with each id from set?

我有一套ids。例如,12, 3, 6, 10。我需要检查,这些 ids 中的每一个都存在(实际上,我有复杂的 WHERE 条件,但这并不重要)。

所以,我可以执行 N 个查询,如下所示:

SELECT 1 FROM tbl WHERE id=12;
SELECT 1 FROM tbl WHERE id=3;
SELECT 1 FROM tbl WHERE id=6;
SELECT 1 FROM tbl WHERE id=10;

或者我可以执行一个查询,但它包含慢 GROUP BY and COUNT(*):

SELECT id, COUNT(*)
WHERE id IN (12, 3, 6, 10)
GROUP BY id

是否有更快速的方法来检查是否存在所有带有 WHERE condition 的行,而不使用 GROUP BY

GROUP BY应该没问题。但是,我会为此推荐DISTINCT ON

SELECT DISTINCT ON (id) id, 1
WHERE id IN (12, 3, 6, 10)
ORDER BY id;