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)