zoukankan      html  css  js  c++  java
  • MySQL 我自己常用的语句汇总

    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 `销售客户资料`.客户编码 != '';

     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:UsersAdministrator>mysqlbinlog --no-defaults  --base64-output=decode-rows -v E:ackuplog.000003>mysql-bin000003.sql
  • 相关阅读:
    HDOJ 5294 Tricks Device 最短路(记录路径)+最小割
    国家人工智能(AI)的美好前景
    预防埃博拉病毒感染的试验疫苗投入人体试验
    MySQL同步复制搭建方法指南详细步骤
    正则表达式,用相反的方式过滤掉特殊字符
    Linux入门教程
    Linux:-bash: ***: command not found
    linux命令大全
    linux下打开、关闭tomcat,实时查看tomcat运行日志
    chmod u+x ./j2sdk-1_4_2_04-linux-i586.bin的含义
  • 原文地址:https://www.cnblogs.com/sungong1987/p/9493340.html
Copyright © 2011-2022 走看看