与一群人区别开来

时间:2013-07-31 13:51:46

标签: mysql distinct distinct-values

我需要编写一个过滤数据的查询。 在我的表中,我将所有数据按val1分组,但我必须删除val2的多个值。

我的表是这样的:

| id | val1 | val2 | other |
|------------------|-------
| 1  | A1   |  b1  | ...
| 2  | A1   |  b1  | ...
| 3  | A1   |  b2  |

| 4  | A2   |  b1  |

| 5  | A3   |  b1  |
| 6  | A3   |  b1  |
| 7  | A3   |  b2  |

| 8  | A4   |  b1  |
| 9  | A4   |  b3  |
| 10 | A5   |  b1  |

我需要这个:

| id | val1 | val2 |
|------------------|
| 1  | A1   |  b1  |
| 3  | A1   |  b2  |
| 4  | A2   |  b1  |
| 5  | A3   |  b1  |
| 7  | A3   |  b2  |
| 8   ...
| 9   ...
| 10  ...

它是来自val1的表组中的一种select *,distinct(val2)。

1 个答案:

答案 0 :(得分:2)

您使用GROUP BY

走在正确的轨道上

以下内容应根据您的问题返回结果

SELECT MIN(id) AS id, val1, val2
FROM   YourTable
GROUP BY
       val1, val2

<强>击穿

  • 在您不希望分组的列上使用聚合函数。在我们的示例中,这是MIN列上的id聚合函数。这将返回每个组的最低ID
  • GROUP BY您希望获得不同
  • 的所有列