SQL15查找employees表所有emp

it2024-06-25  43

题目描述

查找employees表所有emp_no为奇数,且last_name不为Mary(注意大小写)的员工信息,并按照hire_date逆序排列(题目不能使用mod函数) 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','Parto','Bamford','M','1986-08-28'); INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01'); INSERT INTO employees VALUES(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12'); INSERT INTO employees VALUES(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02'); INSERT INTO employees VALUES(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10'); INSERT INTO employees VALUES(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15'); INSERT INTO employees VALUES(10009,'1952-04-19','Sumant','Peac','F','1985-02-18'); INSERT INTO employees VALUES(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24'); INSERT INTO employees VALUES(10011,'1953-11-07','Mary','Sluis','F','1990-01-22');  

输入描述:

输出描述:

emp_nobirth_datefirst_namelast_namegenderhire_date100111953-11-07MarySluisF1990-01-22100051955-01-21KyoichiMaliniakM1989-09-12100071957-05-23TzvetanZielinskiF1989-02-10100031959-12-03PartoBamfordM1986-08-28100011953-09-02GeorgiFacelloM1986-06-26100091952-04-19SumantPeacF1985-02-18 --方法1:使用% SELECT * FROM employees WHERE emp_no % 2 = 1 AND last_name<>'Mary' ORDER BY hire_date DESC;

补充:emp_no % 2=1也可以改成MOD(emp_no, 2)=1,但是某些sql版本可能不支持后者 补充:不相等有三种表示方式:<>、!=、IS NOT 注意:last_name是varchar类型,所以对它的判断需要加上单引号

--方法2:使用& SELECT * FROM employees WHERE emp_no & 1 AND last_name<>'Mary' ORDER BY hire_date DESC;

补充:sql中/表示标准除法,如101/2得到50.5,而DIV表示整数除法,如101 DIV 2得到50

查询奇数的一般方法:如上(最好是位运算&) 查询偶数的一般方法:emp_no=(emp_no>>1<<1) 但是,以上的一般方法,针对的是字段全是数字的情况,如果对于身份证这种中间隐藏了一部分的查询奇数的正则化方法:emp_no REGEXP ‘[13579]’

参考资料:

最新回复(0)