【问题标题】: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;

【问题讨论】:

    标签: mysql sql join sql-update


    【解决方案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

      【讨论】:

      • 真的很酷。太感谢了。这正是我想要的。
      猜你喜欢
      • 1970-01-01
      • 2017-01-18
      • 2015-12-19
      • 1970-01-01
      • 2018-04-22
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      相关资源
      最近更新 更多