更新多个Cols不同行同一表

时间:2015-05-27 00:05:14

标签: psql

这有效:

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;

如何以外部查询可以使用的格式返回子查询?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

您忘记将表格放入查询中:

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

编辑: 尝试分隔您的更新字段。见下文:

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

答案 2 :(得分: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;