更新增加一个门店ID字段的值

MYSQL因为不能查询一张表时同时更新一张表,同时又会有子查询大于等于一条的情况出现.

分两种情况:

1 直接JOIN 得到一张表. 然后导出做筛选

CREATE  TABLE TEST SELECT
    *
FROM
    `1月第三周控奶新客沟通清单_copy` AS a
LEFT JOIN arm_changsha.sys_office AS b ON b.`name` = a.`门店`;

2 做一张临时表,插入需要的字段. 这样可以完成.但是比较麻烦.思考一下更优的方法

ALTER TABLE `1月第三周控奶新客沟通清单_copy` ADD `门店ID` VARCHAR (18) NOT NULL;
#更改增加门店ID字段#创建临时表
CREATE TEMPORARY TABLE TEST SELECT
    *
FROM
    `1月第三周控奶新客沟通清单_copy` AS a
LEFT JOIN arm_changsha.sys_office AS b ON b.`name` = a.`门店`;
#删除原来表的数据
DELETE
FROM
    `1月第三周控奶新客沟通清单_copy`;
#插入需要的字段与数据
INSERT INTO `1月第三周控奶新客沟通清单_copy` (
    `门店`,
    `会员姓名`,
    `手机号码`,
    `控奶首购时间`,
    `控奶首购数量`,
    `T+7小票数`,
    `T+7控奶购买数量`,
    `T+7复购金额`,
    `近90日控奶购买数量`,
    `近90日充值金额`,
    `是否稳定`,
    `门店ID`
) SELECT
    A.`门店`,
    A.`会员姓名`,
    A.`手机号码`,
    A.`控奶首购时间`,
    A.`控奶首购数量`,
    A.`T+7小票数`,
    A.`T+7控奶购买数量`,
    A.`T+7复购金额`,
    A.`近90日控奶购买数量`,
    A.`近90日充值金额`,
    A.`是否稳定`,
    A.id AS 门店id
FROM
    TEST AS A SELECT
        *
    FROM
        `1月第三周控奶新客沟通清单_copy`;

--
-- UPDATE  `1月第三周控奶新客沟通清单_copy` AS a
-- SET       a.门店ID  = (
-- SELECT id FROM TEST LIMIT 1 );
--
-- SELECT * FROM `1月第三周控奶新客沟通清单_copy`

3增加主键

原文地址:https://www.cnblogs.com/sakura3/p/10415301.html

时间: 2024-10-10 17:32:50

更新增加一个门店ID字段的值的相关文章

SQL两表之间:根据一个表的字段更新另一个表的字段

1. 写法轻松,更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from table2 where table1.id=table2.id 2. 常规方式,种写法相当于一个 Left join, 以外面的where为更新条数,如果不加where就是所有记录 update table1 set field1=(select top 1 field1 from table2 where table2.id=tab

如何使用MySQL一个表中的字段更新另一个表中字段

这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ? 1 2 3 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多个列 ? 1 2 3 update a, b set a.title=b.title, a.name=b.name where a.id=b.id ?子查询 ? 1 update student s set ci

写一个根据id字段查找记录的缓存函数(javascript)

前不久在参加面试的时候遇到了这样一道题,"写一个根据id字段查找记录的缓存函数,如果之前查过,则直接返回之前查找过的对象,而无须重新查找".当时由于时间较短加上时间比较紧张,考虑并不是特别全,并没有写出一个比较合适的方法(无法普及调用).今天回过头想了一下,做了一些改进,望大家多给与指点.思路上采用闭包和数组的find方法. var getItem=function () { var cacheArr=[]; //判断数组是否支持find方法,如果不支持则扩充 if (!Array.p

mysql更新一个表里的字段等于另一个表某字段的值

update a left join c on a.id = c.id set a.body = c.c1 where a.id=c.id;update zcat as z left join zcat_bak_1212 as zb on z.zcatId = zb.zcatId set z.zcatName = zb.zcatName where z.zcatName is null; 我用到的如下 update z_vnetid__money a left join tab_feeaccou

sql语句问题 通过联立两个表更新其中一个表的字段

============问题描述============ 有两个表a和b,a表中的字段有mobilehead(号码前7位),provincename,b表中有mobile(正常号码),provincename,需求是通过联立两个表,更新b表中provincename为空的数据. ============解决方案1============ 可以这样做 UPDATE    b SET            b.PN = a.PN FROM         a   WHERE     b.PN = '

用一句sql语句更新两个表并可更新对应的字段的值

ACCESS 例子: insert into products (ProNumber,CASNumber,Cnname,Price,Enname,Baozhuang,Pinpai) select ProNumber,CASNumber,Cnname,Price,Enname,Baozhuang,Pinpai from product22 1.用一句sql从一个表里面取出数据导入另外一个表里面.这个对不同程序之间的数据转换很有用处,而且速度快,数据完整: insert into table1 (c

用另一个表数据更新字段

多个列 UPDATE a, b SET a.title = b.title, a. category= b.category WHERE a.id = b.id 子查询 UPDATE shop s SET city_name = ( SELECT name FROM city WHERE id = s.city_id ); 一个表的cout更新另一个表的字段 UPDATE shop a SET a.goods_count = ( SELECT b.counts FROM ( SELECT mid

判断字段的值是否为空

在Java中,如果判断一个字符串是否为空,可以使用 apache StringUtils类中的public static boolean isBlank(String str) 判断,简单明了.但是,在MySQL中却没有这样的工具,这里提供一个判断某字段的值是否为空的方法.首先介绍两个函数: isnull(exper) 判断exper是否为空,是则返回1:否则,返回0 length(exper) 返回字符串exper所占的字节数(受编码影响).如果为空,返回0 下面提供给两个示例: SELECT

MySQL 批量修改某一列的值为另外一个字段的值

mysql> select * from fruit; +----+--------+-------+ | id | name | price | +----+--------+-------+ | 1 | apple | 0 | | 2 | banana | 0 | | 3 | orange | 0 | | 4 | mango | 0 | | 5 | pomelo | 0 | +----+--------+-------+ 5 rows in set (0.00 sec) 要求很简单,将上面f