题解 ·简单| #查找员工信息#
查找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,然后这道题目也就完成了。
看到别人的题解呢,还有一个方法,不过也都是大差不差的,但是我还是希望自己能够掌握:
SELECT *FROM employeesWHERE emp_no & 1AND last_name<>'Mary'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语句本身。
查看18道真题和解析