首页 > 解决方案 > 如何在 SQL 中混合交换值?

问题描述

我在 python 3 中有一个数据框,从数据库中获取,如下所示:

     col_A      col_B
0    Mas34         10
1    Mer21         32
2   Mas$34         10

col_A 是字符串类型(PRIMARY KEY 也是),col_B 是 int 类型。我想找到一个允许我交换这些值的 SQL 查询,得到如下结果:

     col_A      col_B
0    Mer21         32
1    Mas34         10
2   Mer$21         32

如果第 2 行不存在,则查询将如下所示:

UPDATE table_name
SET col_A =
  (case when col_A = 'Mas34' then 'Mer21' else 'Mas34' end),
SET col_B =
  (case when col_A = 10 then 32 else 10 end)
WHERE id_muestra in ('Mas34', 'Mer21')

但是,我不知道是否可以通过简单的查询来做我想做的事情,或者需要更多以前的 python 代码。

非常感谢您提前!

标签: sqlpython-3.xpandas

解决方案


这回答了问题的原始版本。

这个怎么样?

update t
    set col_B = (case when col_B = 1 then 2 else 1 end);

或者,更简单地说:

update t
    set col_B = 2 - col_B;

推荐阅读