1

我正在尝试查看是否可以将列中的一组单元格的内容替换为同一表中其他位置的列中的一组单元格。

例子:

Book
-------
id payload
1  a
2  b
3  c
4  d
5  e

我想要一个查询,使其如下

Book
-------
id payload
1  c
2  e
3  c
4  d
5  e

假设我想要 3,5 的有效负载来替换 1,2 的内容。

这是我的尝试:

update 
(

select id, payload 
    from Books
    where id in (1,2)
    
) as normal_book_1

join

(

select id, payload 
    from Books
    where id in (3,5)

) as normal_book_2

set normal_book_1.payload = normal_book_2.payload;
4

2 回答 2

0

您可以执行两条UPDATE语句,如下所示:

update books
set payload = (select payload from books where id = 3)
where id = 1

update books
set payload = (select payload from books where id = 5)
where id = 2;
于 2021-10-03T14:57:51.157 回答
0

ON您可以使用子句中列的映射进行自联接:

UPDATE Book b1
INNER JOIN Book b2 ON (b1.id, b2.id) IN ((1, 3), (2, 5))
SET b1.payload = b2.payload;

请参阅演示

于 2021-10-03T15:44:52.803 回答