SQLITE - 测试从 SELECT 返回的所有行是否对特定列具有相同的值

SQLITE - Test if all rows returned from a SELECT have the same value for a particular column

我有以下table

id    || foo     
-------------
1     ||   a    
2     ||   b   
3     ||   b  
4     ||   b
5     ||   c
6     ||   a
7     ||   d

给定一个 ID 列表,我如何测试所有这些记录是否具有相同的 foo 值?

例如

在 (2,3,4) 中选择 id 应该可以通过测试

在 (2,3) 中选择 id 应该可以通过测试

在 (1,6) 中选择 id 应该可以通过测试

在 (5,6) 中选择 ID 应该无法通过测试

在 (1,2) 中选择 ID 应该无法通过测试

(请注意,我没有立即拥有要测试的“foo”值,因此例如使用(2,3,4)我不知道要测试“b”,但没有什么可以停止我使用第一个 id=2 来获取要测试的“b”值)

如果列 foo 不可为空,您可以使用聚合来实现:

SELECT MIN(foo) = MAX(foo) AS result
FROM tablename
WHERE id IN (?, ?, ....);

或:

SELECT COUNT(DISTINCT foo) = 1 AS result
FROM tablename
WHERE id IN (?, ?, ....);

两个查询都将 return 1 行 1 列,值 1 表示结果集的所有行(在 table 被过滤后)包含相同的值在 foo 列中。

参见demo