Mysql 刷题总结 day2

COUNT()函数

列:找薪水记录超过15次的员工号emp_no以及其对应的记录次数t。

select emp_no,COUNT(salary) as t from salaries group by emp_no having t> 15 

IS NULL

列:找出所有非部门领导的员工emp_no

select e.emp_no 
from employees e left join dept_manager d 
 on d.emp_no = e.emp_no where d.dept_no is null ;

查询奇偶数

列:请你查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列。

select * from  employees where last_name !='Mary' and emp_no&1  order by hire_date
desc 
select * from  employees where last_name !='Mary' and emp_no=(emp_no>>1)<<1  order by hire_date
desc 

emp_no&1 :补码与1按位与,返回1与0
emp_no=(emp_no>>1)<<1: emp_no左移右移后与原来的emp_no一样即为偶数。

批量插入

insert into actor(actor_id,first_name,last_name ,last_update ) 
values
(1,'PENELOPE','GUINESS','2006-02-15 12:34:33'),
(2,'NICK','WAHLBERG','2006-02-15 12:34:33');

删除emp_no重复的记录,只保留最小的id对应的记录

delete from titles_test where id not in (
  select * from(
    select min(id) from titles_test group by emp_no )as t
    ) ;

思路:分组查询出id最小的记录,删除不是id最小的记录即可。
表t:mysql不允许在查询的同时删除原表数据,如果向删除,必须给原始数据表取一个别名再删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值