如何将特定列单元格映射到同一张表中的其他特定列单元格?

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 中将一列单元格从一张表插入到另一张表的单个单元格中?

如何根据 c# winforms 中的列日期和名称将 sql 中的数据输入到特定的 datagridview 单元格中

VBA代码将值从一个单元格复制到特定列

如何根据同一张表中的其他列匹配替换空值

如何用特定值填充列中的一系列单元格?

如果范围中的单元格包含特定文本/字符,如何连接列标题