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

时间:2010-05-26 23:29:15

标签: mysql distinct

让我们说:

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

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

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

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

3 个答案:

答案 0 :(得分:7)

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

A  B  C   (columns)
a  b  c1
a  b  c2

取A的不同值,B只给出一个结果(a,b),列C有两个值。 所以问题是你想看到C的所有值还是A列和B列的每个不同值只有一个值?

如果您只想看到一个C值,那么您可以写

SELECT A, B, MAX(C) FROM YourTable
  GROUP BY A, B

另一方面,如果你想查看C的所有值,那么

SELECT DISTINCT A, B, C FROM YourTable WHERE ROW(A,B) IN 
  (SELECT A, B FROM YourTable
     GROUP BY A, B)

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

答案 1 :(得分: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 */

希望这有帮助。

答案 2 :(得分:0)

尝试以下结构

Select cola, colb, colc, CONCAT(convert(cola,char),convert(row_number(), char)

希望这有帮助