Sql 查找另一列至少有两个不同值的ID

Sql 查找另一列至少有两个不同值的ID,sql,Sql,我有这个: SELECT DocumentID FROM ( SELECT DocumentID, Extension FROM Pages GROUP BY DocumentID, Extension HAVING ( Count(1) > 2 ) ) MultiplePages GROUP BY MultiplePages.DocumentID Having ( Count(1) > 1 ) 我正在寻找一个文档的结果集,其中有多个页面,这些页面不共享不同的扩展名。这个查询有效,

我有这个:

SELECT DocumentID
FROM
(
SELECT DocumentID, Extension FROM Pages
GROUP BY DocumentID, Extension HAVING ( Count(1) > 2 )
) MultiplePages
GROUP BY MultiplePages.DocumentID Having ( Count(1) > 1 )
我正在寻找一个文档的结果集,其中有多个页面,这些页面不共享不同的扩展名。这个查询有效,但我想知道是否有更好的方法

此外,我还不熟悉堆栈溢出,我愿意接受关于创建更好的标题、描述或如何搜索此问题的建议。 谢谢

选择DocumentID
从页数
按文档ID分组
具有最小(扩展)和最大(扩展)

选择DocumentID
从页数
按文档ID分组
具有最小(扩展)和最大(扩展)

这太棒了。第二个不那么容易阅读,但仍然容易理解。我不是sql专家,但两者的执行计划分别显示了80/20的成本。这很好。第二个不那么容易阅读,但仍然容易理解。我不是sql专家,但两者的执行计划分别显示了80/20的成本。。。您希望DocumentID具有不同的扩展名,但仅当每个DocumentID多次使用不同的扩展名时,这仍然令人困惑。示例数据和输出将使事情更加清楚。。。您希望DocumentID具有不同的扩展名,但仅当每个DocumentID多次使用不同的扩展名时,这仍然令人困惑。示例数据和输出将使事情更加清楚。
SELECT DocumentID
FROM Pages
GROUP BY DocumentID
HAVING COUNT(DISTINCT(Extension)) > 1
SELECT DocumentID
FROM Pages
GROUP BY DocumentID
HAVING MIN(Extension) <> MAX(Extension)