红移表中的更新

Posted

技术标签:

【中文标题】红移表中的更新【英文标题】:update in redshift table 【发布时间】:2017-03-07 16:44:03 【问题描述】:

我对 redshift 中的表格有一个非常奇怪的问题,以下是我采取的步骤:

   1 : Alter table_name add columns flag integer
    /* table_name row count 10000*/
   2 :update table_name set
   flag = 1 
   where/* some condition*/
   -----rows affected 4000

3.update table_name set
flag = 0
where flag<> 1
 ----rows affected 0

当我从 table_name where flag = 1 中选择时,我得到 4000,那么为什么剩下的 6000 没有得到更新? 谁能解释这背后的逻辑?谢谢你的帮助!!

【问题讨论】:

【参考方案1】:

因为flag 也可以是null 并且要与null 进行比较,您需要is 运算符(或某些数据库引擎提供的NULL 保存不相等运算符)

update table_name 
set flag = 0
where flag is null or flag <> 1

【讨论】:

以上是关于红移表中的更新的主要内容,如果未能解决你的问题,请参考以下文章

仅向红移表添加新的或修改的数据

我们可以使用复制命令使用访问密钥和秘密密钥将数据从 S3 加载到红移表中吗(不使用 IAM 角色)

反正有没有在红移表中只保留一周的数据

我可以直接查询以镶木地板格式存储在 s3 中的数据的红移表吗

向红移表添加行而不是替换表

以追加模式写入pyspark中的红移