题解 ·简单| #查找员工信息#

查找employees表emp_no与last_name的员工信息

https://www.nowcoder.com/practice/a32669eb1d1740e785f105fa22741d5c

select *
from employees
where emp_no%2 = 1
and last_name != 'Mary'
order by hire_date desc

这个题目的话,咱们可以先查找,用select然后再加限定条件,用from限定从哪里查找,然后再去添加限定的一些字段的特殊条件;从题目信息我们可以知道,需要查找的数据主要有三个限制条件,

首先呢就是emp_no这个是奇数,那么这里就直接用实现奇数的算法,那就是,where emp_no % 2 = 1,

然后呢又说,last_name不能等于Mary,那就是and last_name != 'Mary',

然后最后,又说需要按某个东西逆序,这个东西呢是hire_date,那么我们就写order by hire_date desc,然后这道题目也就完成了。

看到别人的题解呢,还有一个方法,不过也都是大差不差的,但是我还是希望自己能够掌握:

  1. SELECT *
  2. FROM employees
  3. WHERE emp_no & 1
  4. AND last_name<>'Mary'
  5. ORDER BY hire_date DESC;

这条SQL查询语句的目的是从`employees`表中选择出满足特定条件的记录。我们可以逐步分解这条语句:

1. `SELECT *`: 这意味着选择所有列。

2. `FROM employees`: 这指明了从哪个表中选择数据,即`employees`表。

3. `WHERE emp_no & 1`: 这里使用了位运算中的“与”操作(&)。在二进制中,如果一个数字的最低位是1,那么该数字与1进行“与”操作的结果仍然为1;如果最低位是0,那么结果为0。所以,这个条件实际上是检查`emp_no`的最低位是否为1。这可能用于检测某些特定的属性或分类,但具体含义依赖于实际的业务逻辑。

4. `AND last_name<>'Mary'`: 这是一个简单的条件,确保选择的记录中的`last_name`列的值不是'Mary'。

5. `ORDER BY hire_date DESC;`: 这意味着结果将根据`hire_date`列的值进行降序排序。最晚入职的员工将首先显示。

综上,这个查询从`employees`表中选择所有列,但只选择那些满足以下条件的记录:

* `emp_no`的二进制中最低位是1,那么其实0

* last_name`不是'Mary'

* 按照入职日期降序排列

需要注意的是,这个查询的具体行为可能依赖于数据库的实际设计和业务逻辑,因此上面的解释是基于提供的SQL语句本身。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务