zoukankan      html  css  js  c++  java
  • MySQL使用小记

    •  1、DELETE使用JOIN后的临时表作为删除添加
    DELETE p FROM (SELECT 
            id, MAX(time) AS time
        FROM
            schema1.table1
        
        WHERE
            id IN (SELECT 
                id
            FROM
                schema1.table1
            GROUP BY id
            HAVING SUM(IF(type = 1, 1, - 1)) >= 2)
        GROUP BY id) t1
            INNER JOIN
        schema1.table2 p ON p.id = t1.id AND p.time = t1.time

    这里根据id和MAX(time)来删除table2中满足条件的记录,注意这里table2用了别名p,DELETE后面一定要使用别名。

    官网参考链接:

    https://dev.mysql.com/doc/refman/5.7/en/delete.html

    • 2、MySQL字段指定为NOT NULL DEFAULT 'abc',INSERT INTO 插入NULL值报错
    CREATE TABLE `t1` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `a` varchar(30) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT 'a',
      `b` varchar(30) NOT NULL,
      `c` varchar(30) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
    SELECT * FROM mytest.t1;

    如上表结构,INSERT INTO语句如下将报错:

    INSERT INTO mytest.t1 (id,a,b,c) values(3,null,'b','c');

    语句如下正常插入,此时a为默认值'a'

    mytest.t1 (id,b,c) values(3,'b','c');

    也就是如果字段为NOT NULL要么你不指定该字段的值,指定的话必须是NOT NULL的值,否则就会报错。

    • 2、EXCEL列转换为SQL where语句中in()的集合

    经常处理数据发现需要将Excel数据转换为SQL语句,比如我有一个SELECT语句WHERE语句需要in(id),这个id是Excel的一列,并且数据很多。使用工具IDEA:

            a,首先拷贝该列值到IDEA

            b,按住alt+shift+Click选中所有行(列编辑)

            c,在每行后面统一加逗号(',')

            d,然后拷贝到SQL语句就OK了

     列编辑更多用法参考:https://blog.jetbrains.com/idea/2015/02/multiple-selections-in-editor-using-mouse/

  • 相关阅读:
    第11次作业
    第十次作业
    找回感觉的练习
    Tomact学习笔记
    移动端问题小计
    节流和防抖函数
    requestAnimationFrame动画封装
    svg实现渐变进度圆环
    手机端判断安卓,iso,微信
    git常用指令
  • 原文地址:https://www.cnblogs.com/maxiaofang/p/7132428.html
Copyright © 2011-2022 走看看