有一个要求,我需要在表格中填写一个 group-id
作为 item-id
和 auto-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_id
和Auto_id
两列已经填充,我们需要填充group_id
。对于每个重复的 item_id
,这种关系就像 group_id
将是 auto_id
的最小值。
我希望我说清楚。如果可能请帮忙。
谢谢, 阿希什
最佳答案
您可以使用带有分组依据的子查询,在其中计算每个 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
请参阅 fiddle 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
fiddle 是 here .
关于mysql - 对数据进行分组的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17918694/