美文网首页
【MySql】举几个栗子

【MySql】举几个栗子

作者: Y了个J | 来源:发表于2019-03-26 13:15 被阅读0次
之前问到的一个面试题,做个记录
屏幕快照 2019-03-26 下午1.01.59.png
create table test1(
  id int unsigned primary key auto_increment,
  flag varchar(10) DEFAULT NULL,
  status varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `test1`(`id`, `flag`, `status`) VALUES (1, 'A', 'EBL');
INSERT INTO `test1`(`id`, `flag`, `status`) VALUES (2, 'A', 'EBL');
INSERT INTO `test1`(`id`, `flag`, `status`) VALUES (3, 'A', 'DEL');
INSERT INTO `test1`(`id`, `flag`, `status`) VALUES (4, 'B', 'DEL');
INSERT INTO `test1`(`id`, `flag`, `status`) VALUES (5, 'B', 'DEL');
INSERT INTO `test1`(`id`, `flag`, `status`) VALUES (6, 'B', 'EBL');

查找表中多余的重复记录,重复记录是根据单个字段(flag)来判断

SELECT * FROM test1 WHERE flag  IN (
    SELECT flag FROM test1 GROUP BY flag HAVING count(flag) > 1
)

查找表中多余的重复记录(多个字段,flag、status)

SELECT * FROM test1 WHERE (flag, status) IN (
    SELECT flag, status FROM test1 GROUP BY flag, status HAVING COUNT(*) >1
)

删除表中多余的重复记录,重复记录是根据单个字段(flag)来判断,只留有id最小的记录

DELETE FROM test1 WHERE flag IN (
    SELECT flag FROM test1 GROUP BY flag HAVING count(flag) > 1
) AND id NOT IN (
    SELECT min(id) FROM test1 GROUP BY flag HAVING count(flag) > 1
)

删除表中多余的重复记录(多个字段,flag、status),只留有id最小的记录

DELETE FROM test1 WHERE (flag, status) IN (
    SELECT flag, status FROM test1 GROUP BY flag, status HAVING count(*) > 1
) AND id NOT IN (
    SELECT min(id) FROM test1 GROUP BY flag, status HAVING count(*) > 1
)

统计A和B各自status出现的次数


屏幕快照 2019-03-26 下午1.13.35.png
SELECT 
flag,
SUM(CASE status WHEN 'EBL' THEN 1 ELSE 0 END) AS EBL,
SUM(CASE status WHEN 'DEL' THEN 1 ELSE 0 END) AS DEL
FROM test1 GROUP BY flag
关于COUNT函数
create table tb_test3(
  id int unsigned primary key auto_increment,
  one varchar(10) NOT NULL,
  two varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

#插入数据:
insert into tb_test3(one,two) values (1,NULL);
insert into tb_test3(one,two) values ('',2);
insert into tb_test3(one,two) values (3,3);

#使用COUNT函数统计one字段:
select count(one) from tb_test3;   #结果为: 3 条, 说明 空字符串('') 会被count()函数统计!
#使用COUNT函数统计two字段:
select count(two) from tb_test3;   #结果为: 2条,  原因是NULL 不会被count()函数统计到!

#注意: 使用 * 号来统计会把NULL算进去!
SELECT count(*) FROM tb_test;
+----------+
| count(*) |
+----------+
|        3 |
+----------+

相关文章

  • 【MySql】举几个栗子

    之前问到的一个面试题,做个记录 查找表中多余的重复记录,重复记录是根据单个字段(flag)来判断 查找表中多余的重...

  • 12月晨读笔记-10-/b/和/t/

    (一)语言点 1⃣️ oops这类的non-lexical sounds有很多,举几个栗子: 表示思考:Um /ə...

  • 我推演的图灵机(一)

    举几个栗子 水-->河-->人工河 水-->缸-->家用水 水-->热水壶-->开水 水-->游泳池-->池水(可...

  • 举个“栗子”

    举个栗子 举把剑 举只皮卡丘 举只大白 举个艾斯 举个钢铁侠 举只福娃

  • Shell基石:模式匹配

    模式匹配在Shell脚本中的运用很广泛。举几个栗子: "三元运算符" 在上述例子中,x=${1:-"hello"}...

  • AEのsaber

    被安利了一个炫酷的AE插件,saber,来自AK大神Video Copilot里,特效非常之多,举几个栗子: 有多...

  • 三、Mongodb Java中的使用

    添加maven依赖 连接方式 举几个个栗子 先封装一个简单的连接工具类 添加、获取 集合 添加文档 检索所有文档 ...

  • iOS设计模式之单例模式

    前文提要: 之前简友说让举栗子,那么今天我们就来举栗子。前文传送门:iOS设计模式、架构模式、框架简介之《设计模式...

  • 有哪些在内行人眼里高大上,在外行人眼里却很low的东西?

    有人觉得高大上,有人觉得low,最大的原因在于认知偏差,该打架举几个“栗子”,你们肯定都深有体会: 1、某冈教材 ...

  • CSS伪类/伪元素

    伪类:CSS 伪类用于向某些选择器添加特殊的效果 选几个常用的伪类举栗子 选中input框里面的placehold...

网友评论

      本文标题:【MySql】举几个栗子

      本文链接:https://www.haomeiwen.com/subject/tjjgvqtx.html