2013-08-20 4 views
0

Я пытаюсь обновить коллекцию имен хостов компьютера, чтобы соответствовать недавно измененным номерам комнат. Имена хостов в базе данных форматируются как FL-itf2106a, а 2106 - старый номер комнаты. У меня уже есть список в другой таблице, в котором есть старые и новые номера комнат в одной строке. Я пытаюсь удалить все нечисловые строки из строки для имени хоста и безуспешно присоединиться к этой таблице обновлений.Обновить значения таблицы из другой таблицы с помощью объединений?

UPDATE computers c 
INNER JOIN updates u 
     ON u.old = (
        SELECT NumericOnly(c.hostname) 
        WHERE hostname 
         LIKE "%FC%" 
        ) 
     SET c.hostname = CONCAT('classf', u.new); 

NumericOnly - это функция пользователя, которая удаляет все символы, кроме цифр из строки.

Я пытаюсь установить столбец имени хоста равным классуf + номер нового номера.

ответ

0

я рискну с чем-то вроде

UPDATE computers c 
INNER JOIN updates u 
     ON u.old = NumericOnly(c.hostname) 
     SET c.hostname = CONCAT('classf', u.new) 
    WHERE c.hostname LIKE "%FC%"; 
+0

Похоже, у меня все еще есть учусь с MYSQL. Это всего лишь ответ, который я искал. Отлично. Благодаря! – user2698299

0

Postgresql версии, которая работала для меня:

update table1 set columnZ = newValue from table1 t1 
inner join table2 t2 
on t1.columnX = t2.columnY 
where table1.uniqueID = t1.uniqueID 
and t2.filterColumn = filterValue 

http://johnstewien.wordpress.com/2010/03/15/doing-a-join-in-an-update-in-sql-for-postgresql/

Этот вопрос возникает в первые несколько хитов " SQL UPDATE JOIN "в Google.

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