我有一组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 和 COUNT(*)
:
SELECT id, COUNT(*)
WHERE id IN (12, 3, 6, 10)
GROUP BY id
是否有更快速的方法来检查是否存在具有某些WHERE 条件
的所有行,而无需使用GROUP BY
?
最佳答案
GROUP BY
应该没问题。但是,我建议为此使用 DISTINCT ON
:
SELECT DISTINCT ON (id) id, 1
WHERE id IN (12, 3, 6, 10)
ORDER BY id;
关于sql - 如何检查集合中是否有每个 id 的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58208431/