select
*
from
employees
where
hire_date = (
select
max(hire_date)
from
employees
)
总结:嵌套查询
select
*
from
employees
where
hire_date = (
select
distinct hire_date
from
employees
order by
hire_date desc
limit
2, 1
)
总结:嵌套查询以及limit使用 limit n,m 从n索引开始的m条数据
select
salaries.*,dept_manager.dept_no
from
salaries
left JOIN dept_manager on dept_manager.emp_no = salaries.emp_no where salaries.to_date='9999-01-01' and dept_manager.to_date='9999-01-01'
order by
salaries.emp_no asc
总结:先查询 后排序
select
employees.last_name,
employees.first_name,
dept_emp.dept_no
from
employees
left join dept_emp on employees.emp_no = dept_emp.emp_no
where
dept_no ! = ''
总结:左连接以及不为空
select distinct salary
from salaries
order by salary desc
总结:去重查询
select employees.emp_no
from employees
left join dept_manager
on employees.emp_no = dept_manager.emp_no
WHERE dept_manager.dept_no is null
总结:不为空的另一种表达
SELECT e.emp_no,d.emp_no manager
FROM dept_emp AS e,dept_manager AS d
WHERE e.dept_no = d.dept_no
AND e.emp_no <> d.emp_no
总结:不等于可以用<>或者!=表示 别名最好取de,dm 不相等有三种表示方式:<>、!=、IS NOT
方法一:
select *
from employees
where emp_no % 2 = 1
and last_name != 'Mary'
order by hire_date desc
方法二:
SELECT *
FROM employees
WHERE emp_no &
1
AND last_name<>
'Mary'
ORDER BY hire_date DESC;
总结:补充:emp_no % 2=1也可以改成MOD(emp_no, 2)=1,但是某些sql版本可能不支持后者(比如题库就不支持)
注意:last_name是varchar类型,所以对它的判断需要加上单引号
补充:sql中/表示标准除法,如101/2得到50.5,而DIV表示整数除法,如101 DIV 2得到50
补充:奇偶数查询:参考资料:20170922--mysql--奇偶数查询_ccStroy的博客-CSDN博客_mysql查询字段值尾数是偶数的
查询奇数的一般方法:如上(最好是位运算&)
查询偶数的一般方法:emp_no=(emp_no>>1
但是,以上的一般方法,针对的是字段全是数字的情况,如果对于身份证这种中间隐藏了一部分的,积极无法使用
所以更好的方法是使用正则化表达式