MySQL 我自己常用的语句汇总

时间:2022-02-21 06:07:47

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.更新时间=DATE_FORMAT(NOW(),'%x年%m月%e日%H时%i分');
    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//查看重复数据的条数