【问题标题】:CodeIgniter: How to move one column value to another with Where condition using active recordCodeIgniter:如何使用活动记录将一个列值移动到另一个具有 Where 条件的值
【发布时间】:2021-03-30 20:01:12
【问题描述】:

我想将一列值移动到另一列值,例如有两个表列'Location','Call_Location' 我想将 'Call_location' 的所有值移动到 'Location' 列,并且仅具有选定日期范围的条件。在codeigniter中怎么做。

$text = "UPDATE phone_acc SET location = call_location WHERE dt >= 
dateformat(current_date, '%Y-%m-01')
AND dt < dateformat(current_date, '%Y-%m-01') + interval 1 month;
$this->db->query($text);

这不起作用。

其中一个问题发现它将第二个字段名称作为字符串值“call_type”,而它应该将其作为字段名称。

    UPDATE `phone_acc` SET `location` = 'call_type' WHERE `call_date` = '2020-11- 
   01 01:33:51'

【问题讨论】:

  • 你真正想要什么??
  • 将列值复制到另一列。这是一种批量更新,会影响数千条记录。
  • 两列数据类型相同??
  • 是字符串。查询中似乎没有问题。但它仍然无法正常工作。数据库方面没有问题。
  • 我需要使用update_batch()吗

标签: php mysql codeigniter activerecord model


【解决方案1】:

您的查询缺少当月的条件。假设日期存储在dt 列中,您会这样做:

UPDATE phone_acc 
SET location = call_localtion 
WHERE id = 50959757 AND dt >= dateformat(current_date, '%Y-%m-01')

对于满足where 谓词的每一行,这会将一个值从一列复制到另一列同一行

如果您的数据中有未来日期,也请使用上限:

dt >= dateformat(current_date, '%Y-%m-01')
AND dt < dateformat(current_date, '%Y-%m-01') + interval 1 month

【讨论】:

  • 抱歉,我错过了我编辑帖子的查询中的日期。但这不是我面临的问题。它就像一个影响数千条记录的批量更新。查询运行,最后它说找不到页面错误....但即使是单个选定的记录也没有更新。不知道出了什么问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多