更新同一张表的整列字段

首先需要先把需要更新的整列结果查询出来。

这里记录下mysql时间的函数:DATE_FORMAT( 字段名, ‘%Y-%m-%d %H:%i:%s‘ )  第二个参数是要转换的格式,因为我本来的格式中有毫秒。

以下是举例:

转换的sql :SELECT id AS dd, DATE_FORMAT( created, ‘%Y-%m-%d %H:%i:%s‘ ) created2 FROM pe_project_list

整条sql:

UPDATE pe_project_list
INNER JOIN ( SELECT * FROM ( SELECT id AS dd, DATE_FORMAT( created, ‘%Y-%m-%d %H:%i:%s‘ ) created2 FROM pe_project_list ) a ) b ON b.dd = pe_project_list.id
SET pe_project_list.created = b.created2;

这里说下为什么外面还要套一层select,因为不能先select出同一表中的某些值,再update这个表(在同一语句中),所以把select出的结果再通过中间表select一遍,这样就规避了错误。这个问题目前似乎只存在于mysql。

把两张表(本质上是一张)连起来,再添加set中的约束条件,使两列中的每一条数据都一一对应,这样即可完成更新。

时间: 2024-08-01 19:21:41

更新同一张表的整列字段的相关文章

在Microsoft SQL Server 2008中,将一张表的某列字段的值转换为列名称

create table test (部门 varchar(10), 客户 varchar(10), 费用名称 varchar(10), 金额 int)   insert into test values ('A','a','手机费',10) insert into test values ('A','a','办公费',11) insert into test values ('A','a','公交费',9) insert into test values ('A','b','手机费',10)

mysql如果在使用多表连查时,两张或多张表出现相同的字段名的解决办法

多表查询时,mysql语句为: select a.*,b.* from 表A名 as a left join 表B名 as b on a.字段名=b.字段名; 当出现两个相同字段名字时,比如相同字段名为name,就可以a.name as aname,b,name as bname; 语句为: select a.name as aname,b.name as bname from as a left join 表B名 as b on a.字段名=b.字段名; mysql如果在使用多表连查时,两张或

Oracle两张表关联批量更新其中一张表的数据

Oracle两张表关联批量更新其中一张表的数据 方法一(推荐): UPDATE 表2 SET 表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A) WHERE EXISTS (SELECT 1 FROM 表1 WHERE 表1.A = 表2.A); 尤其注意最后的外层where条件尤为重要,是锁定其批量更新数据的范围. 方法二: MERGE INTO 表2 USING 表1 ON (表2.A = 表1.A) -- 条件是 A 相同 WHEN MATCHED TH

两张表行转列案例

B表 A表 SELECT PV.* FROM ( SELECT b.DeliverLineType, b.DeliverLineTypeName, convert(varchar,CoverageRangeStart)+'-'+convert(varchar,CoverageRangeEnd) AS CoverageRange, b.SpecialRegionFactor, a.Charging, convert(varchar,WeightRangeStart)+'-'+convert(var

***mysql 用一个表的一列,去更新另一表的一列

需求: 老板给了一个EXCEL数据,是本人提供的一个模板,含ID,现在相当于要导入这新增的一列数据到数据库中的某一个表. 方法一:用navicat,在excel中复制一列,再粘贴到navicat中的一列中去 方法二:用sql的方法:先建一个临时表,将数据导入,里面有ID和desc两列,再执行下面的语句 UPDATE gy_doctor a, gy_tmp b SET a.dr_desc = b.`desc` WHERE a.dr_id = b.id; 设有表t1: id name1 null2 

两张表并集求相同字段的和

有两张表a b 每张表里有两个字段都是id numa表的值id  num   b表的值  id  numa    5             b   15b    10            c   20c    15            d   20d    20            e   30求出两张表的结果 用一条sql结果值id  numa   5b   25c   35d   40e   30 SELECT `id`, SUM(`num`) FROM (SELECT * FROM

查询表一张表的列名及字段类型

select  tabale_name,column_name,data_type,data_length,data_precision from all_tab_cols where table_name=' 表名(大写)' 查询     表名            ,字段名        ,字段的数据类型,字段的长度,字段的精度  从      视图(all_tab_cols)中    条件为表名=‘’ !条件中的表名必须是大写. !create table  t  (x,number(38

更新一张表的数据到新表

update mb_tariff a inner join mb_tariff_temp b  set a.payment =  b.payment where a.mybus_id = b.mybus_id

一张表有三个字段:id(城市id) Cityname(城市名) Privence(所属省份)如果要统计每个省份有多少城市请用SQL实现。