MySQL 我自己常用的语句汇总

Wesley13
• 阅读 676

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(客户名称) AS c,
        客户名称,
        是否口袋导入
    FROM
        `销售客户资料`
    GROUP BY
        客户名称
    HAVING
        c > 1
) tmp

SET `销售客户资料`.状态 = '删除' 

WHERE 
     `销售客户资料`.客户名称 = tmp.客户名称 
    AND `销售客户资料`.是否口袋导入 = '是' 
    AND `销售客户资料`.客户编码 != '';
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
SQL UPDATE 语句:更新表中的记录语法及案例剖析
SQLUPDATE语句UPDATE语句用于更新表中的记录。SQLUPDATE语句UPDATE语句用于更新表中已存在的记录。SQLUPDATE语法UPDATE_table\_name_SET_column1_\_valu
Easter79 Easter79
3年前
sql注入
反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
oracle游标的例子
declare    cursor ca is select id_no, name from user where ym201401;begin    for cb in ca loop        update path set enamecb.name where id_nocb.id
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
Oracle一张表中实现对一个字段不同值和总值的统计(多个count)
需求:统计WAIT\_ORDER表中的工单总数、未处理工单总数、已完成工单总数、未完成工单总数。表结构:为了举例子方便,WAIT\_ORDER表只有两个字段,分别是ID、STATUS,其中STATUS为工单的状态。1表示未处理,2表示已完成,3表示未完成总数。 SQL:  1.SELECT   2
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究