2013-07-29 3 views
0

Существует требование, что мне нужно заполнить group-id в таблице в виде комбинации item-id и auto-id. Таблица выглядит следующим образом.SQL-запрос к данным группы

---------------------------------------- 
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.

Надеюсь, я разъясню. Если возможно, пожалуйста, помогите.

Спасибо, Ashish

+2

Не должно быть 'Group_id = 3' для 3-й и 4-й строки? (где Item_id = 2) –

+0

Да Ненад. Исправленный. Благодарю. – Ashish

ответ

3

Вы можете использовать подзапрос с группой по, где вы вычислить минимальный auto_id для каждого ITEM_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.

+0

Большое спасибо fthiella ... работает абсолютно нормально ... – Ashish

Смежные вопросы