0

我需要编写一个过滤我的数据的查询。在我的表中,我将所有数据按 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  ...

这是一种 select *,distinct(val2) from table group by val1..

4

1 回答 1

2

你在正确的轨道上使用GROUP BY

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

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

分解

  • 在您不想分组的列上使用聚合函数。在我们的示例中,这是列MIN上的聚合函数id。这将返回每个组的最低 id
  • GROUP BY您想要获得不同值的所有列
于 2013-07-31T13:53:22.763 回答