MySQL将查询的结果作为update更新的数据,且在原字段数据后 CONCAT拼接(lej)

MySQL将查询的结果作为update更新的数据,且在原字段数据后 CONCAT拼接(lej)

大家好,又见面了,我是全栈君。

update user INNER JOIN 
(SELECT GROUP_CONCAT('',id)AS app_id_str  FROM `app` WHERE `admin_id` = '用户B的id' AND `status` > '0' AND `is_deleted` = '0' LIMIT 0,1000 ) app_id_strs 
set app_id= CONCAT(app_id,',',app_id_str) WHERE uid=用户A的id;

释义:

1.查询app表中状态大于0,未删除,且admin_id=用户Bid 用户的所有主键id,并用(,)逗号 拼接成字符串别名 app_id_strs ;

(SELECT GROUP_CONCAT('',id)AS app_id_str  FROM `app` WHERE `admin_id` = '用户B的id' AND `status` > '0' AND `is_deleted` = '0' LIMIT 0,1000 ) app_id_strs 

2.更新用户A 的app_id, 在A用户原有的app_id 后,用CONCAT,拼接上查询出来的app_id_strs,并在两者之间用(,)逗号连接

扩展:

二、mysql中update和select结合使用

在遇到需要update设置的参数来自从其他表select出的结果时,需要把update和select结合使用,不同数据库支持的形式不一样,在mysql中如下:

update A inner join(select id,name from B) c on A.id = c.id set A.name = c.name;

根据AB两个表的id相同为条件,把A表的name修改为B的sql语句就如上所示

三、update 和 select 结合使用进行数据更新,案例 

现有两张表 inspect_danger 和 company 表,根据 company 表的 ID 和 inspect_danger 表的COMPANY_ID 匹配,把 company 表内的 INDUSTRY 更新到 inspect_danger表中。

UPDATE inspect_danger ins
LEFT JOIN (
    SELECT 
    com.ID,com.INDUSTRY,ip.ID insId
    FROM company com
    INNER JOIN  inspect_danger ip
    ON ip.COMPANY_ID = com.ID
    GROUP BY com.ID
) c 
ON ins.ID = c.insId
SET ins.COMPANY_INDUSTRY = c.INDUSTRY

四、做SQL查询时会经常需要,把查询的结果拼接成一个字符串。

解决方法: 通过 group_concat 函数

1.正常查询 如下: 

select id result from ctp_enum_item limit 100;

MySQL将查询的结果作为update更新的数据,且在原字段数据后 CONCAT拼接(lej)

2.拼接结果 如下

  select group_concat("'",id,"'") result from ctp_enum_item limit 100; 

MySQL将查询的结果作为update更新的数据,且在原字段数据后 CONCAT拼接(lej)

3.因为拼接的结果很长,导致拼接结果显示不全,可以通过以下方法解决。  在每次查询前执行,使得查询结果值变大。

SET SESSION group_concat_max_len = 10240;
或者
SET GLOBAL group_concat_max_len = 10240; 

4.补充:SQL server 的 拼接SQL如下:

select stuff((
select ','+ requestid
from nccombinedpayment for xml path('')),1,1,'') as requestid ;

五、mysql 对查询出来的字段拼接字符串 concat

SELECT item_starttime,item_username,CONCAT('外出',item_wcaddress) as item_wcaddress,author from tlk_KQ_goout_app;

拼接之前MySQL将查询的结果作为update更新的数据,且在原字段数据后 CONCAT拼接(lej)

拼接之后

MySQL将查询的结果作为update更新的数据,且在原字段数据后 CONCAT拼接(lej)  六、浅析MySQL中concat以及group_concat的使用

七、mysql 往表中某个字段的字符串后追加字符串

update 表名 set 字段名=CONCAT(字段名,”需添加的值”)WHERE 条件;

例如:

update np_order set customer_remark=CONCAT(customer_remark,"需添加的值")WHERE order_id='1'

np_order :表名

customer_remark  字段名称

where  后指定条件

八、mysql 把select结果update更新到表中,从查询结果中更新数据

逻辑:两张表连接获取finishin的重量插入到sale.

UPDATE sale
INNER JOIN (
	SELECT
		sale.FNo,
		sale.FEntryID,
		(finishin.FQty) AS qty
	FROM
		sale,
		finishin
	WHERE
		sale.FNo = finishin.FNo
	AND sale.FEntryID = finishin.FEntryID
	ORDER BY
		sale.FNo
) sale2 ON sale2.FNo = sale.FNo
AND sale2.FEntryID = sale.FEntryID
SET sale.FqtyIn = sale2.qty

逻辑:timefinishin表中有多个相同的FBillNo,FEntryID一样的数据,通过分组来求和qty总重量,成为一张新的表和salesorderinfo进行连表

UPDATE salesorderinfo
INNER JOIN (
	SELECT
		salesorderinfo.FBillNo,
		salesorderinfo.FEntryID,
		(timein.FqtyIn) AS qty
	FROM
		salesorderinfo,
		(
			SELECT
				*, SUM(timefinishin.FQty) AS FqtyIn
			FROM
				timefinishin
			GROUP BY
				FBillNo,
				FEntryID
		) timein
	WHERE
		salesorderinfo.FBillNo = timein.FBillNo
	AND salesorderinfo.FEntryID = timein.FEntryID
) sale2 ON sale2.FBillNo = salesorderinfo.FBillNo
AND sale2.FEntryID = salesorderinfo.FEntryID
SET salesorderinfo.FqtyIn = sale2.qty

发现好东西,https://httpbin.org/ 这个网站可以用来测试 http 请求
参考:

https://blog.csdn.net/qq_36823916/article/details/79403696

https://blog.csdn.net/qq5621/article/details/108098826

https://blog.csdn.net/cydbetter/article/details/82117841

https://blog.csdn.net/mary19920410/article/details/76545053

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111441.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 求一个微信签到小程序的源码

    求一个微信签到小程序的源码RT 谢谢大神们

    2025年6月13日
    0
  • TDD 与FDD 的区别

    TDD 与FDD 的区别我们知道FDD(FrequenceDivisionDuplex)和TDD(TimeDivisionDuplex)分别是频分双工和时分双工的英文缩写。FDD系统是指系统的发送和接收数据使用不同的频率,在上行和下行频率之间有双工间隔,如GSM、CDMA、WCDMA系统都是典型的FDD系统;时分双工系统则是系统的发送和接收使用相同的频段,上下行数据发送在时间上错开,通过在不同时隙发送上下行数据可

    2022年5月22日
    43
  • 《将博客搬至CSDN》[通俗易懂]

    《将博客搬至CSDN》[通俗易懂]后续的文章将自动同步到csdn

    2022年7月29日
    3
  • JWT原理构成与使用(带案例简单易懂)[通俗易懂]

    JWT原理构成与使用(带案例简单易懂)[通俗易懂]JWT原理构成与使用项目架构开发模式:前后端分离前端框架:VUE后端框架:DjangoRESTframework功能部分:管理员登录,数据统计,用户管理,商品管理,订单管理,权限管理主要技术:JWT用户认证,CORS跨域跨域CORS我们的前端和后端分别是两个不同的端口位置域名前端服务www.meiduo.site:8080后端服务www.m…

    2022年10月10日
    0
  • 一步步入门log4cpp

    一步步入门log4cpp前言项目实现过程中,需要检查、查找或者调试程序bug等,此时程序日志则较为清晰地展现代码的运行过程。目前接触到的方法有打印消息到控制台,将重要信息输出到某个文件比如txt文件,或者直接使用日志库。

    2022年7月4日
    31
  • 分布式事务saga_分布式事务代码例子

    分布式事务saga_分布式事务代码例子1.分布式事务  在前面文章《分布式事务》中介绍了几种分布式事务,其中Saga介绍了相关的概念,接下来介绍Saga使用案例,案例来源《微服务架构设计模式》。2.案例需求分析2.1一个成功的订单创建流程  实现餐馆系统中的创建订单createOrder()操作。这个操作必须验证消费者是否满足下订单的相关条件、验证订单内容、完成消费者的信用卡授权,以及在数据库中创建Order。一个成功的订单创建流程:创建一个待处理订单;验证订单消费者可以下单;创建后厨工单;对消费者提供的信用卡进行授权操

    2022年9月15日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号