4

我有一个类似于下面的数据表:

ID   A   B
10  5    blue
10  8    red
10  10  yellow
20  2    black
20  17  blue
30  7    red
30  12  green
30  50  black

基本上我想编写一个 mySQL 查询来输出如下内容:

ID   A   B
10  5    blue
20  2    black
30  7    red

它仅给出“ID”的唯一值和每个唯一“ID”的“A”的最小值。'B' 只是行中伴随它的额外数据。

我的查询应该是什么样的?

4

2 回答 2

5

您可以使用子查询来识别min(a)每个值id,然后将其连接回您的表:

select *
from yourtable t1
inner join
(
  select min(A) A, id
  from yourtable
  group by id
) t2
  on t1.id = t2.id
  and t1.A = t2.A

请参阅带有演示的 SQL Fiddle

结果是:

| ID | A |     B |
------------------
| 10 | 5 |  blue |
| 20 | 2 | black |
| 30 | 7 |   red |
于 2012-12-15T14:42:03.953 回答
0

您的查询看起来像这样

  SELECT *
  FROM table t1
  INNER JOIN
         (
  SELECT min(A) mi, A, ID
  FROM table
  GROUP BY ID
         ) t2
   ON t1.ID = t2.ID
   AND t1.A = t2.A
于 2012-12-15T14:46:38.333 回答