让我们说:
我想在我的表中查询colA,colB和colC.
我想看DISTINCT值,但我不希望colA成为区分的标准.
省略colA不是一种选择.
构建该查询的最佳方法是什么?
这里有两种情况.假设你有数据
A B C (columns)
a b c1
a b c2
Run Code Online (Sandbox Code Playgroud)
取A的不同值,B只给出一个结果(a,b),C列有两个值.所以问题是你想看到C的所有值还是A列和B列的每个不同值的一个值?
如果你只想看到C的一个值,那么你可以写
SELECT A, B, MAX(C) FROM YourTable
GROUP BY A, B
Run Code Online (Sandbox Code Playgroud)
另一方面,如果要查看C的所有值
SELECT DISTINCT A, B, C FROM YourTable WHERE ROW(A,B) IN
(SELECT A, B FROM YourTable
GROUP BY A, B)
Run Code Online (Sandbox Code Playgroud)
给你这个.如果表中有其他列,则需要最后一个替代方法.
我不知道临时表的语法,所以请使用伪代码 =)
Select Distinct ColB, ColC into @Temp
From SomeTable
Where (predicates)
Select ColA, ColB, ColC
From SomeTable
Inner Join @Temp on (SomeTable.ColB = @Temp.ColB and SomeTable.ColC = @Temp.ColC)
Where (predicates) /* Added for comments */
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。