SQL查询分组数据

时间:2013-07-29 07:54:41

标签: mysql sql database tsql

我需要在表格中填充group-id item-idauto-id的组合。表格如下;

----------------------------------------
Item_id  |  Auto_id  |  Group_id
----------------------------------------
1        |  1        |  1 
1        |  2        |  1
2        |  3        |  3
2        |  4        |  3
3        |  5        |  5
3        |  6        |  5
3        |  7        |  5
4        |  8        |  8
4        |  9        |  8
5        |  10       |  10
6        |  11       |  11

这两个列已经填充Item_idAuto_id,我们需要填充group_id。对于每个重复的item_idgroup_id至少为auto_id,该关系就像是一样。

我希望我说清楚。如果可能请帮助。

谢谢, Ashish

1 个答案:

答案 0 :(得分:3)

您可以使用子分组,其中包含group by,您可以在其中计算每个item_id的最小auto_id。然后,您可以将此子查询与原始表连接:

SELECT t1.Item_id, t1.Auto_id, t2.Group_id
FROM
  yourtable t1 INNER JOIN (
    SELECT Item_Id, MIN(Auto_id) Group_id
    FROM yourtable
    GROUP BY Item_Id) t2
  ON t1.Item_Id=t2.ItemId

请参阅小提琴here

如果您需要更新现有列,可以使用此UPDATE查询:

UPDATE
  yourtable t1 INNER JOIN (
    SELECT Item_Id, MIN(Auto_id) Group_id
    FROM yourtable
    GROUP BY Item_id) t2
  ON t1.Item_Id=t2.Item_Id
SET
  t1.Group_id=t2.Group_id

小提琴是here