如何将特定列单元格映射到同一张表中的其他特定列单元格?
Posted
技术标签:
【中文标题】如何将特定列单元格映射到同一张表中的其他特定列单元格?【英文标题】:How to map specific column cells to other specific column cells in same table? 【发布时间】:2021-11-24 06:29:56 【问题描述】:我正在尝试查看是否可以将列中的一组单元格的内容替换为同一表中其他位置的列中的一组单元格。
例子:
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;
【问题讨论】:
【参考方案1】:你可以执行两条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;
【讨论】:
【参考方案2】:您可以使用ON
子句中的列映射进行自联接:
UPDATE Book b1
INNER JOIN Book b2 ON (b1.id, b2.id) IN ((1, 3), (2, 5))
SET b1.payload = b2.payload;
请参阅demo。
【讨论】:
真的很酷。太感谢了。这正是我想要的。以上是关于如何将特定列单元格映射到同一张表中的其他特定列单元格?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 OpenOffice 中将一列单元格从一张表插入到另一张表的单个单元格中?