如何检查,是否有来自每个集合的ID的行?

问题描述 投票:1回答:1

我设置了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

sql postgresql exists
1个回答
1
投票

GROUP BY应该很好。但是,我为此建议DISTINCT ON

SELECT DISTINCT ON (id) id, 1
WHERE id IN (12, 3, 6, 10)
ORDER BY id;
© www.soinside.com 2019 - 2024. All rights reserved.