mysql查询,以相对于同一个表中的另一列插入列的值

时间:2015-06-15 08:25:17

标签: mysql

以下是我一直在努力的示例表

╔════╦══════════════╦══════╗
║ KID║  REVCA       ║ REDO ║
╠════╬══════════════╬══════╣
║  4 ║ 43453453345  ║  0   ║
║  2 ║ NULL         ║  0   ║
║  5 ║ NULL         ║  0   ║
║  7 ║ 5566533      ║  0   ║
╚════╩══════════════╩══════╝

我通过另一个表中的选择插入 REVCA 值。 对于我得到的每个 NULL 值,我需要将 REDO 更新为 1

以下是预期输出

╔════╦══════════════╦══════╗
║ KID║  REVCA       ║ REDO ║
╠════╬══════════════╬══════╣
║  4 ║ 43453453345  ║  0   ║
║  2 ║ NULL         ║  1   ║
║  5 ║ NULL         ║  1   ║
║  7 ║ 5566533      ║  0   ║
╚════╩══════════════╩══════╝

我目前正在使用更新查询

UPDATE \`REVCA \` SET  \` REDO\` = 1      
WHERE \`REVCA \`= 0;

我正在寻找替代方案,因为数据库的大小非常大。 我在插入过程中需要它。

我只能使用普通的sql来达到目的 请帮我完成同样的事情。  谢谢!

1 个答案:

答案 0 :(得分:2)

简单如下:

update table set redo = 1 where revca is null

插入时:

insert into table(kid, revca, redo)
select @kid, @revca, case when @revca is null then 1 else 0 end