首页 > 试题广场 >

查找employees表emp_no与last_name的员

[编程题]查找employees表emp_no与last_name的员
  • 热度指数:290713 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个员工表employees简况如下:
emp_no
birth_date
first_name
last_name
gender hire_date
10001
1953-09-02
Georgi
Facello
M 1986-06-26
10002
1964-06-02
Bezalel
Simmel
F 1985-11-21
10003
1959-12-03
Bezalel
Mary M 1986-08-28
10004
1954-05-01
Christian
Koblick
M 1986-12-01
10005 1953-11-07 Mary Sluis F 1990-01-22

请你查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列,以上例子查询结果如下:
emp_no birth_date first_name last_name gender hire_date
10005
1953-11-07 Mary
Sluis   F
1990-01-22
10001 1953-09-02 Georgi Facello   M 1986-06-26
示例1

输入

drop table if exists  `employees` ; 
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Bezalel','Mary','M','1986-08-28');
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');
INSERT INTO employees VALUES(10005,'1953-11-07','Mary','Sluis','F','1990-01-22');

输出

10005|1953-11-07|Mary|Sluis|F|1990-01-22
10001|1953-09-02|Georgi|Facello|M|1986-06-26
select *
from employees
where emp_no % 2 = 1 and last_name <> 'Mary'
order by hire_date desc

发表于 2024-04-30 09:05:30 回复(0)
select * from employees
where emp_no%2!=0 and last_name!='Mary'
order by hire_date desc;

编辑于 2024-02-05 12:22:09 回复(0)
# 请你查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列,以上例子查询结果如下:

#emp_no%2=1 对2取余1

select 
    emp_no,
    birth_date,
    first_name,
    last_name,
    gender,
    hire_date
from employees
where emp_no%2=1
  and last_name<>'Mary'
order by 6 desc
;

发表于 2023-09-06 10:46:38 回复(0)
select 
    emp_no, birth_date, first_name, last_name, gender, hire_date
from
    employees
where   
    emp_no % 2 != 0
    and 
    last_name != "Mary"
order by
    hire_date desc

发表于 2023-02-12 06:00:14 回复(0)
select 
    *
from 
    employees 
where 
    mod(emp_no,2)=1 and last_name<>'Mary'
order by 
    hire_date desc 

发表于 2022-12-07 11:47:59 回复(0)
select * 
from employees
where emp_no &1
and (last_name !='Mary')
order by hire_date desc;

select * 
from employees
where emp_no mod 2 =1
and (last_name !='Mary')
order by hire_date desc;



发表于 2022-10-29 16:06:16 回复(0)
两种方法 一个正常 一个娱乐
第一种:
select * 
from employees
where emp_no % 2 = 1
and   last_name <> 'Mary'
order by hire_date desc

第二种(试了下单行函数和子查询)
select * 
from employees
where emp_no in (
                    select if(right(emp_no,1) in (1,3,5,7,9),emp_no,null) 
                    from employees
                    where last_name <> 'Mary'
                )
order by hire_date desc

发表于 2022-09-07 12:09:17 回复(0)
select * from employees
where emp_no % 2 
and last_name != 'Mary'
order by hire_date desc

发表于 2022-08-21 14:28:55 回复(0)
笨方法:
select * from employees 
where last_name!='Mary'
and round(emp_no/2)!=emp_no/2
order by hire_date desc
聪明方法改第三行:
emp_no & 1 = 1【但不太清楚位运算是什么
emp_no % 2 = 1
MOD(emp_no,2) = 1

发表于 2022-08-16 13:56:05 回复(0)
Select *
From employees
Where emp_no REGEXP '[13579]$' and last_name!='Mary'
order by hire_date desc
用正则表达式判断奇偶性的不会就我一个吧?
为什么大家不用呢,是因为性能不好嘛?
再来复习一遍
Where emp_no REGEXP '[13579]$'
表示筛选出emp_no中以13579结尾的那些数字
Where emp_no REGEXP '^[13579]'
表示筛选出emp_no中以13579开头的那些数字
发表于 2022-08-11 12:02:29 回复(0)
select
  *
from
  employees
where
  last_name <> 'mary'
  and emp_no % 2 <> 0
order by
  hire_date desc
发表于 2022-08-04 14:32:05 回复(0)
select * from employees
where emp_no mod 2 !=0 
and last_name !='Mary'
order by hire_date desc;
# 注意,where后面不能接聚合函数,但是正常的四则运算是可以的。
不等于可以写成<>或者!=,两种写法都行
发表于 2022-08-03 22:49:36 回复(0)
select *
from employees
where mod(emp_no,2)=1
and last_name <> "Mary"
order by hire_date desc

使用mod()函数好像速度比使用%取余慢一些,还是建议使用%吧
发表于 2022-06-09 17:28:03 回复(0)
select *
from employees
where emp_no %2 != 0 and last_name != 'Mary'
order by hire_date desc;
发表于 2022-06-01 15:14:09 回复(0)
select * from employees where emp_no%2 = 1 and last_name != 'Mary' order by hire_date desc
发表于 2022-05-21 19:43:38 回复(0)
为啥这样不行
select emp_no,birth_date,first_name,last_name,gender,hire_date
from employees
where emp_no in ('___1','___3','___5','___7','___9') and last_name != 'Mary'
order by hire_date desc
发表于 2022-05-21 10:05:03 回复(0)
select * from employees
where emp_no%2=1 and last_name!='Mary'
order by hire_date desc

发表于 2022-05-16 22:31:03 回复(0)
select
*
from employees
where mod(emp_no,2)=1 and last_name <> "Mary"
order by hire_date desc

发表于 2022-05-15 12:01:51 回复(0)
select * from employees where emp_no%2 !=0 and last_name !='Mary' order by hire_date desc;

发表于 2022-05-11 15:01:54 回复(0)

判断奇偶数

  • MOD(id,2) = 1 表示对2求余 = 1 -------奇数
    MOD(id,2) = 0 表示对2求余 = 0 -------偶数

  • id%2=1 表示对2求余 = 1 -------奇数
    id%2=0 表示对2求余 = 0 -------偶数

  • &位运算 ,奇数和1做&操作得到1,偶数和1做&操作得到0
    id & 1= 1 -------奇数
    id & 1= 0 -------偶数

发表于 2022-05-09 17:56:01 回复(1)