【问题标题】:SQL query to group data对数据进行分组的 SQL 查询
【发布时间】:2013-07-29 07:54:40
【问题描述】:

我需要在表格中填写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_id,这种关系就像group_id 的最小值是auto_id

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

谢谢, 阿什

【问题讨论】:

  • 第三排和第四排不应该是Group_id = 3吗? (其中 Item_id = 2)
  • 是的,内纳德。已更正。谢谢。

标签: mysql sql database tsql


【解决方案1】:

您可以使用带有分组依据的子查询,在其中计算每个 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

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 2021-01-23
    相关资源
    最近更新 更多