首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用从另一列计算的值更新多行

用从另一列计算的值更新多行
EN

Stack Overflow用户
提问于 2009-02-12 03:49:29
回答 4查看 3.7K关注 0票数 3

我有一张有一行的桌子,看起来是这样的:

(2009123148498429,‘.’,‘.’)

第一部分id是一个时间戳,后面跟着一个随机数。(需要处理系统中的其他部分)表中已经存在数据。

我想要创建一个列,时间戳,只提取日期(20091231),并用时间戳更新所有行。

  1. 如何对使用SQL的所有行执行此操作?(即用某种函数更新它们?)
  2. 为了确保将来的插入正确提取日期,应该分配什么样的默认值?

更新-请阅读博文斯在第一个回答问题上的评论,这个问题由乔纳森·桑普森回答,我们是如何得到答案的。这是最后一个有效的查询:

代码语言:javascript
复制
UPDATE table SET rdate=substring(convert(rid,char(20)),1,8);

问题是我使用substring作为substring( str, 0, 8 ),而它应该是substring( str, 1, 8 )。我想我们都习惯了0作为开始位置!关于子串的更多信息

相关:mysql中的多个更新

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-02-12 03:53:43

代码语言:javascript
复制
SELECT SUBSTRING(colDate,0,8) as 'date' 
FROM someTable

还是我搞错了?

代码语言:javascript
复制
UPDATE someTable
SET newDateField = SUBSTRING(colDate,0,8)

可能也会起作用。未经测试。

票数 2
EN

Stack Overflow用户

发布于 2009-02-12 03:56:20

在你的更新中使用一个子选择(未经测试,我已经使用火鸟太久了,所以有人在这里检查我)。

代码语言:javascript
复制
UPDATE MyTable AS TUpdate
SET MyNewField = (SELECT SUBSTRING(TSub.MyDateColumn,0,8) 
                  FROM MyTable AS TSub 
                  WHERE TSub.MyID = TUpdate.MyID);

至于将来的插入正确提取日期,您必须在insert上创建一个触发器来提取该记录的日期。

票数 1
EN

Stack Overflow用户

发布于 2009-02-12 03:58:36

需要使用子选择。

更新someTable set时间戳=(从someOriginalTable中选择SUBSTRING(colData,0,8) );

编辑 lc给了我几秒钟的时间!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/539942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档