1,更新,根据一个表更新另一个表,比如批量同步外键

方法一:

update 更新表 set 字段 = (select 参考数据 from 参考表 where  参考表.id = 更新表.id);

update table_2 m  set m.column = (select column from table_1 mp where mp.id= m.id);

方法二:

update table_1 t1,table_2 t2 set t1.column = t2.column where t1.id = t2.pid;

2,视图,把相同字段的表合起来

SELECT `b`.`Id` AS `Id`,`b`.`状态` AS `状态` FROM `培训体系之部门培训` `b` UNION

SELECT `c`.`Id` AS `Id`, `c`.`状态` AS `状态` FROM `培训体系之安全培训` `c` UNION

SELECT `d`.`Id` AS `Id`, `d`.`状态` AS `状态` FROM `培训体系之理念培训` `d`;

3,触发器,更新订单表的状态时,同时根据订单号更新订单明细表的状态

条件【触发:After;插入[ ],更新[√],删除[ ]】

BEGIN

if(new.状态='新') then

update 销售订单明细 set 状态='新' where 订单号=new.订单号 and 状态<>'删除';

end if;

END

4,触发器,更新一个时间戳

条件【触发:Before;插入[ ],更新[√],删除[ ]】

BEGIN

if(new.仓库(箱)!=old.仓库(箱) or new.车间(箱)!=old.车间(箱) ) then

set NEW.更新时间= set new.签到时间=DATE_FORMAT(NOW(),'%x-%m-%d %H:%i:%s');;

end if;

END

5,触发器,获取刚刚添加记录的自增id

条件【触发:After;插入[√ ],更新[],删除[ ]】

new.id

6,查询,分组查询,关键字用逗号隔开

select class_id, group_concat(name) frome student group by class_id;

7,查询,查重

SELECT 某列A,COUNT(*) FROM 表名 GROUP BY 某列A HAVING COUNT(*) > 1//查看重复数据的条数

8,去重,从口袋助理的app里导入自己的系统一些客户资料,但是客户名重复了,需要删除。

UPDATE`销售客户资料`,

(SELECT

count(客户名称) ASc,

客户名称,

是否口袋导入FROM`销售客户资料`GROUP BY客户名称HAVINGc> 1) tmpSET `销售客户资料`.状态 = '删除'

WHERE`销售客户资料`.客户名称=tmp.客户名称AND `销售客户资料`.是否口袋导入 = '是'

AND `销售客户资料`.客户编码 != '';

9,mysql筛选条件为限定长度的字符串

select * from a where length(user_id) = 8 ;

10,触发器注意事项

Before与After区别:before:(insert、update)可以对new进行修改。

after不能对new进行修改。 两者都不能修改old数据。

11,查重

SELECT * FROM `销售客户资料` WHERE `销售客户资料`.`客户名称` IN(select t.`客户名称` from `销售客户资料` t group by t.`客户名称` having count(*)>1)ORDER BY `销售客户资料`.`客户名称` DESC LIMIT 2;

12,binlog恢复SQL

C:\Users\Administrator>mysqlbinlog --no-defaults --base64-output=decode-rows -v E:\backuplog.000003>mysql-bin000003.sql

13,触发器定义变量注意一定要定义在最前面,比如↓

#更新欠款

#说明:销售订单中未付金额列发生更新时,将相应用户的未付金额之和更新到销售客户资料表中对应的欠款列。BEGIN

declare m DECIMAL(10,2);declare n DECIMAL(10,2);if(new.未付金额 <> old.未付金额) then

select 销售客户资料.欠款 into m from 销售客户资料 where 销售客户资料.客户编码=old.客户编码;select SUM(销售订单.未付金额) into n from 销售订单 where 销售订单.客户编码=old.客户编码;UPDATE 销售客户资料 SET 销售客户资料.欠款 = n WHERE 销售客户资料.客户编码 =old.客户编码;

#将以上操作记录如下INSERT INTO触发器操作记录

(触发器, 触发源表, 触发源Id, 触发源索引列, 触发源索引值, 触发源列, 触发目标表, 触发目标索引列, 触发目标索引值, 触发目标列, 触发行为描述, 触发时间)VALUES('GengXinQianKuan', '销售订单', old.Id, '客户编码', old.客户编码, '未付金额', '销售客户资料', '客户编码', old.客户编码, '欠款', CONCAT(m, '→', n), DATE_FORMAT(NOW(),'%Y年%c月%e日 %H时%i分%s秒') );end if;END

14,mysql更新语句(根据a表和b表的关联关系,将b表中的计算结果更新到a表中)

UPDATEtbl_users aINNER JOIN(SELECT user_id, sum( pay_amount ) ASamountFROMtbl_users_pay_detailsGROUP BY user_id ) b ON a.id = b.user_id

SET a.pay_total =b.amount;

或者updatetbl_users a,(select

user_id,sum(pay_amount) asamountfromtbl_users_pay_detailsgroup by user_id)bset a.pay_total=b.amountwhere a.id=b.user_id或者UPDATEtbl_users aSET a.pay_total = ( SELECT sum( b.pay_amount ) FROM tbl_users_pay_details b WHERE a.id = b.user_id );

15,mysql查询某一个字段是否包含中文汉字

在使用mysql时候,某些字段会存储中文字符,或是包含中文字符的串,查询出来的方法是:SELECT column FROM table WHERE length(column)!=char_length(column)

原理其实很简单,当字符集为UTF-8,并且字符为中文时,length() 和 char_length() 两个方法返回的结果是不相同的。

16,触发器,Before Update

# 用友存货编码

# 逻辑:当[申购采购]表更改[用友存货编码]列时,其列[名称,规格,材质要求],重新从[存货档案]表提取相应列[存货大类名称,描述,材质]进行同步,并且以[项目号]为关联字段同步[预算表]的相应列[用友存货编码,项目名称,规格型号,材质要求]

BEGIN#name 存货档案.存货大类名称declare n VARCHAR(100);

#description 存货档案.描述declare d VARCHAR(255);

#texture 存货档案.材质declare t VARCHAR(255);

#id 预算表.Iddeclare i int(11);if(old.用友存货编码<>'' and new.用友存货编码<>old.用友存货编码) then

select 存货档案.存货大类名称 into n from 存货档案 where 存货档案.存货大类编码 =new.用友存货编码;select 存货档案.描述 into d from 存货档案 where 存货档案.存货大类编码 =new.用友存货编码;select 存货档案.材质 into t from 存货档案 where 存货档案.存货大类编码 =new.用友存货编码;select 预算表.Id into i from 预算表 where 预算表.项目号 =old.项目号;update 预算表 set预算表.用友存货编码=new.用友存货编码,

预算表.项目名称=n,

预算表.规格型号=d,

预算表.材质要求=twhere 预算表.项目号 =old.项目号;set new.名称 =n;set new.规格 =d;set new.材质要求 =t;

#增加修改记录insert into 申购采购记录 (序号, 用户, 用户操作) VALUES (old.Id, '触发器YongYouCunHuoBianMa@申购采购', CONCAT('名称 →', n, '| 规格 →', d, '| 材质要求 →', t, '|', DATE_FORMAT(NOW(),'%Y年%c月%e日 %H时%i分%s秒')));insert into 预算表记录 (序号, 用户, 用户操作) VALUES (i, '触发器YongYouCunHuoBianMa@申购采购', CONCAT('用友存货编码 →', new.用友存货编码, '| 名称 →', n, '| 规格 →', d, '| 材质要求 →', t, '|', DATE_FORMAT(NOW(),'%Y年%c月%e日 %H时%i分%s秒')));end if;END

17,触发器,After Update,定义变量怎么判空赋值

#同步 机加工件BEGIN

declare s int(11);if(new.状态 <> old.状态) then

select sum(数量) into s from 部门物资管理 where 机加工件物资管理Id=old.机加工件物资管理Id and 状态='出库';if (s is null) then

select 0 intos;end if;UPDATE 机加工件物资管理 SET 领用数量 = s WHERE Id =old.机加工件物资管理Id;

###########################################################################################################select sum(数量) into s from 部门物资管理 where 机加工件物资管理Id=old.机加工件物资管理Id and 状态='退库';if (s is null) then

select 0 intos;end if;UPDATE 机加工件物资管理 SET 退回数量 = s WHERE Id =old.机加工件物资管理Id;end if;END

mysql从小到大的语句_MySQL 我自己常用的语句汇总相关推荐

  1. mysql建表用的什么语句_mysql建表常用sql语句个人经验分享

    连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) 断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@ ...

  2. mysql工具记录用户的查询语句_MySQL数据库的常用命令语句记录——安全用户语句及函数...

    安全用户语句及函数 CREATE USER:创建用户 CREATE USER 'user'[@'host'] [ IDENTIFIED BY [PASSWORD] 'password'][,....] ...

  3. mysql ddl dml 导出_MySQL:DDL和DML语句,弄明白了吗?

    语句分类 DDL(Data Definition Languages)语句:即数据库定义语句,用来创建数据库中的表.索引.视图.存储过程.触发器等,常用的语句关键字有:CREATE,ALTER,DRO ...

  4. mysql查询主键sql语句_MySQL数据库-表操作-SQL语句(一)

    1. 数据库操作与存储引擎 1.1   数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...

  5. mysql select查询字段_MySQL基础:SELECT查询语句

    Blog:博客园 个人 概述 SELECT语句用于从表中选取/查询数据,结果被存储在一个结果表中(称为结果集). 语法格式 SELECT [ALL | DISTINCT | DISTINCTROW ] ...

  6. mysql sql执行过程_MySQL探秘(二):SQL语句执行过程详解

    昔日庖丁解牛,未见全牛,所赖者是其对牛内部骨架结构的了解,对于MySQL亦是如此,只有更加全面地了解SQL语句执行的每个过程,才能更好的进行SQL的设计和优化. 当希望MySQL能够以更高的性能运行查 ...

  7. mysql内嵌插入语句_MySQL中添加或插入语句(Insert)的几种使用方式

    MySQL中添加或插入语句(Insert)的几种使用方式 1.INSERT 简写方式插入数据(不推荐) 1.先看一下表中有那些数据 2.使用Inset into 表名 values(值1,值2)进行插 ...

  8. mysql的学生选课表_50个常用sql语句 网上流行的学生选课表的例子

    50个常用sql语句 网上流行的学生选课表的例子 更新时间:2012年06月26日 18:32:29   作者: 这篇文字在网上被转载烂了,里面有些sql适合用在应用系统里,有些"报表&qu ...

  9. mysql联合查询查询语句_mysql多表联合查询语句是什么

    mysql多表联合查询语句是:使用select语句,union关键词,语法为[select 语句1 union [union 选项] select 语句2 union [union 选项] selec ...

最新文章

  1. 音频编辑大师 3.3 注冊名 注冊码
  2. [你必须知道的css系列]第一回:丰富的利器2:CSS选择符之子选择符、相邻选择符...
  3. python机器学习库xgboost——xgboost算法(有分类和回归实例)
  4. 第30讲:如何爬app的数据
  5. 缺失值的处理——R语言
  6. 以ABP为基础架构的一个中等规模的OA开发日志
  7. php.ini 中文详解
  8. 算法 摩尔投票算法(图解例题)
  9. oracle查看本机字符集,查看、修改oracle字符集,查看oracle版本
  10. 如何获取免费比特币?
  11. QQ音频文件服务器,unlock-music:支持解密网易云/QQ音乐的加密文件和ID3信息补全...
  12. JavaScript 运算符优先级 - 汇总表
  13. 用Java代码实现一个简单的聊天室功能
  14. Android webview拦截请求
  15. ubuntu18.04配置静态ip和动态ip
  16. vue中img本地图片地址的具体使用
  17. MATLAB图像分割的GUI设计
  18. Git操作不规范,战友提刀来相见。
  19. WIN32下使用DirectSound接口的简单音频播放器(支持wav和mp3)
  20. 经验分享:如何有效应对Facebook广告数据波动问题?

热门文章

  1. 利用selenium+chrome模拟登陆合工大信息门户并进行自动填写测评
  2. streamsets数据采集平台介绍
  3. ATT汇编---第一个linux汇编程序
  4. 【IP摄像机】IPC硬件构成
  5. 关于异鬼II bootkit病毒的关情况
  6. redis面试:由于主从延迟导致读取到过期数据怎么处理
  7. Oracle ACFS、ADVM
  8. 龙腾出行联手百达屋,在北京首都机场打造“巴塞罗休息室”
  9. TogoID - 生物医学数据库ID转换工具
  10. 【论文干货】科研论文idea快速产出指南!