2015-05-27 2 views
0

Это работает:обновление нескольких Cols Different Row Same Таблица

UPDATE tracks 
SET (artist, lyrics) = 
('Last, First', 'none yet') 
WHERE id = 127; 

И это работает:

UPDATE tracks 
SET lyrics =      
(SELECT lyrics FROM tracks WHERE id = 64) 
WHERE id = 127; 

Эта песня возвращается ошибка (около lyrics) =)

UPDATE tracks 
SET (artist, lyrics) =  
    (SELECT artist, lyrics 
    FROM tracks 
    WHERE id = 64) 
WHERE id = 127; 

Как я вернуть подзапрос в формате, который может использовать внешний запрос?

ответ

2

Вы забыли поставить таблицу в запросе:

UPDATE tracks 
SET (artist, lyrics) =  
    (SELECT 
      artist, 
      lyrics 
    FROM #your_tablename_here 
    WHERE id = 64) 
WHERE id = 127; 

Edit: Попробуйте отделить ваши поля обновления. Смотрите ниже:

UPDATE tracks 
    SET artist = (SELECT artist FROM tracks WHERE id = 64), 
     lyrics = (SELECT lyrics FROM tracks WHERE id = 64) 
WHERE id = 127; 
+0

К сожалению, это была только ошибка в фактическом сообщении. Вопрос исправлен. Ошибка: «ERROR: синтаксическая ошибка в или рядом с« SELECT ». – MikeiLL

+0

Разделение полей работает. Я хочу дать Derived Table ответить на шанс (если он исправлен), хотя, прежде чем «принять». Спасибо. – MikeiLL

+0

Ошибка синтаксиса с использованием MYSQL 5.6.17. –

2
UPDATE tracks 
SET (artist, lyrics) =  
    (SELECT artist, lyrics 
    FROM [Put your table name here] 
    WHERE id = 64) 
WHERE id = 127; 
+0

К сожалению, это был всего лишь ошибка в самом посте. Вопрос исправлен. Ошибка: «ERROR: синтаксическая ошибка в или рядом с« SELECT ». – MikeiLL

0

я сделать это таким образом:

UPDATE tracks 
JOIN (/* Derived table */ 
SELECT tx.artist, tx.lyrics 
    FROM tracks tx 
    WHERE id = 64 
) dt 
SET tracks.artist=dt.artist, tracks.lyrics = dt.lyrics 
WHERE id = 127; 
+0

что-то не совсем верно: 'ERROR: ошибка синтаксиса в точке или рядом с" join " – MikeiLL

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