MySQL:使用DISTINCT时忽略选定的列

DrA*_*oel 6 mysql distinct

让我们说:

  1. 我想在我的表中查询colA,colB和colC.

  2. 我想看DISTINCT值,但我不希望colA成为区分的标准.

  3. 省略colA不是一种选择.

构建该查询的最佳方法是什么?

mdm*_*dma 7

这里有两种情况.假设你有数据

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)

给你这个.如果表中有其他列,则需要最后一个替代方法.


Imm*_*ive 0

我不知道临时表的语法,所以请使用伪代码 =)

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)

希望这可以帮助。