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不允许在查询的同时删除原表数据,如果向删除,必须给原始数据表取一个别名再删除。