最近一直在做数据统计,在此过程中,遇到过好多种情况都是对一张表按照不同的条件进行多次统计,以前的做法是统计几次按照不同的条件left join 几次,虽然也能得到想要的结果,但是效率太低,反映在页面就是访问速度很慢. 今天在又一次遇到这种情况,要对一张表按照不同的条件进行七八次统计,不想在按照以前的思路来了,在网上一搜,果真可以通过case when语句进行统计,具体思路如下: 第一步:按照数据的共性,查询出来所有数据,包括要统计次数的那些字段 第二步:用把case when 包含在count函…
表名:student 表结构及数据: +----+--------+---------+------+------------+--------------+---------+ | id | name   | english | math | birthday   | native_place | chinese | +----+--------+---------+------+------------+--------------+---------+ |  1 | 潘怡茹 |     …
如何把一个表的数组复制到一张表?也许很多人会把这个表查出来的数据再插入到另外一张表里面,这样很麻烦又要写代码逻辑去处理,其实一条sql语句就可以把一张表的数据复制到另外一张表,或者一张表的某一条数据复制到另外一张表 Mysql为大家提供一个这样 INSERT INTO tableName SELECT value 首先先创建两张表 CREATE TABLE `a` ( `a` ) , `b` ) , `c` ) , `d` ) , UNIQUE KEY `d` (`d`), UNIQUE KEY…
1.在面试的时候碰到一个 问题,就是让写一张表中有id和name 两个字段,查询出name重复的所有数据,现在列下: select * from xi a where (a.username) in  (select username from xi group by username  having count(*) > 1) 2.查询出所有数据进行分组之后,和重复数据的重复次数的查询数据,先列下: select  count(username) as '重复次数',username from…
有时,我们需要对比两张表的数据,找到在其中一张表,不在另一张表中的数据 hql 如下: SELECT * FROM (SELECT id FROM a WHERE dt = '2019-03-17' ) a LEFT JOIN (SELECT id FROM b ) b ON a.id = b.id WHERE b.id IS NULL;…
SQL Server: SELECT  *  INTO  table_bak   FROM   table Oracle.MySQL.SQLite: CREATE TABLE table_bak AS SELECT * FROM table 此SQL可把 table 表中的数据备份到  table_bak 表,数据库会自动创建 table_bak 表. 注意:此操作只会备份table表中的数据,不会备份索引.字段默认值等.…
问题场景 各大平台店铺的三项评分(物流.服务.商品)变化情况: 商品每日价格的变化记录: 股票的实时涨跌浮: 复现场景 表:主键ID,商品编号,记录时的时间,记录时的价格,创建时间. 问题:获取每个商品每次的变化情况(涨跌幅.涨跌率). 解决思路 1.要想高效率的更新涨跌,就肯定不能是逐条数据更新,要通过自连表建立起对应关系,将每一条数据关联到上一次的价格数据. 2.由于数据库非常庞大,所以可能存在很多垃圾数据,就比如说相关的字段值为NULL或者非有效值的,这些数据要先排除掉. SELECT i…
在A表中存在一个字段“AccountId”,而且不同记录之间的“AccountId”值有可能会相同,现在就是需要查询出在该表中的各记录之间,“AccountId”值存在重复的项,这里count记录该字段重复的记录数(此处只针对该字段是否重复进行查询):Select AccountId,Count(*) From A Group By AccountId Having Count(*) > 1 如果查询多个字段也相同大则如下:Select AccountId,Name,Count(*) From…
update TBL_1 A, TBL_2 B, TBL_3 Cset a.email=c.email_addrwhere a.user_id=b.user_id and b.un_id=c.un_id 多表之间的简单数据迁移 老是记不得,mark下来备用…
将表T_wz_wz中的部分数据插入到表t_wz_kc: ,,'Y' from t_wz_wz where yxbz='Y' --去重复 -- and wzid not in (select wzid from t_wz_kc)…