SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.11.2018 10:46:44

hudoy
Участник
Зарегистрирован: 16.11.2018
Сообщений: 2

Запрос для обновления значений по повторяющемуся id

Добрый день! Ситуация такая:
Есть некая таблица b_file в базе одной известной CMS
Структура ее примерно такая
ID                             Filename                        Original_name

1                              6465tfdsv.jpg                         1.jpg
2                              hjjhjkj477.jpg                        1.jpg
3                              655hbhhg.jpg                        1.jpg
4                              ghgjhjhbjh.jpg                       2.jpg
5                              g6t6t6767.jpg                        2.jpg
6                              sesrfc656.jpg                         2.jpg

и.т.д

смысл в том , что нужно выбрать значения filename из первой строки и установить его для всех строк с одинаковым полем Original_name и далее для следующего  Original_name тоже самое, в итоге должно получиться так:

ID                             Filename                        Original_name

1                              6465tfdsv.jpg                        1.jpg
2                              6465tfdsv.jpg                        1.jpg
3                              6465tfdsv.jpg                        1.jpg
4                              ghgjhjhbjh.jpg                       2.jpg
5                              ghgjhjhbjh.jpg                       2.jpg
6                              ghgjhjhbjh.jpg                       2.jpg

Натолкните на мысль, можно ли сделать это запросом или нужно создать временную таблицу только с первыми вхождениями и уже через нее проапдейтить?

Неактивен

 

#2 16.11.2018 11:20:11

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Запрос для обновления значений по повторяющемуся id

update b_file, (select Original_name, Filename from b_file t join
(select Original_name, min(id) mid from b_file group by Original_name) t1
on t.Original_name = t1.Original_name and t.id = t1.mid) x
set b_file.Filename = x.Filename
where  b_file.Original_name = x.Original_name

Неактивен

 

#3 16.11.2018 11:56:02

hudoy
Участник
Зарегистрирован: 16.11.2018
Сообщений: 2

Re: Запрос для обновления значений по повторяющемуся id

Спасибо, получаю ошибку
/* Ошибка SQL (1052): Column 'Original_name' in field list is ambiguous */
поправил так


update b_file, (select Original_name, Filename from b_file t join
(select Original_name o_name, min(id) mid from b_file group by o_name) t1
on t.Original_name = t1.o_name and t.id = t1.mid) x
set b_file.Filename = x.Filename
where  b_file.Original_name = x.Original_name
 

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson