sql刷题错误总结

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

但是,以上的一般方法,针对的是字段全是数字的情况,如果对于身份证这种中间隐藏了一部分的,积极无法使用

所以更好的方法是使用正则化表达式

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值