select o1.emp_name as 员工姓名1 , o2.emp_name as 员工姓名2 from tableTest join employee o1 on tabletest.[Emp_ID1] = o1.[emp_id] join employee o2 on tabletest.[Emp_ID2] = o2.[emp_id]
单表distinct 多表group by group by 必须放在 order by 和 limit之前,不然会报错 ************************************************************************************ 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from peop
单表distinct 多表group by group by 必须放在 order by 和 limit之前,不然会报错 下面先来看看例子: table id name 1 a 2 b 3 c 4 c 5 b 库结构大概这样,这只是一个简单的例子,实际情况会复杂得多. 比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录. select distinct name from table得到的结果是: name a b
表(emp)结构 (1)查询部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料. SELECT * FROM emp ; (2)有奖金的工种. SELECT DISTINCT job FROM emp WHERE comm IS NOT NULL; (3)查询名字由三个字组成的员工. SELECT * FROM emp WHERE ename LIKE '___'; (4)查询2000年入职的员工. SELECT * FR
前戏 --创建表 create table xxx( id int unsigned not null auto_increment primary key, name varchar(20) not null ); 1.增 --全字段插入 insert into xxx values(0,"王老五"); -- 字段插 insert into xxx(name) values("王老六"); -- 多行插入 insert into xxx(name) values
--1,选择不猛30中的雇员 SELECT * FROM EMP WHERE DEPTNO = 30; --2,列出所有办事员的姓名,编号和部门 SELECT ENAME,EMPNO,DEPTNO FROM EMP WHERE JOB = 'CLERK'; --3,找出佣金高于薪金的雇员 SELECT * FROM EMP WHERE NVL(COMM,0) > SAL; --4,找出佣金高出薪金的60%的雇员 SELECT * FROM EMP WHERE NVL(COMM,0) > SAL
-- 工资高于3000的员工select * from emp where sal > 3000;-- 工资在2500和3000之间的员工select * from emp where sal <= 3000 and sal >= 2500;-- 指定日期后入职的员工select * from emp where hiredate > '1982-1-1';-- 查找首字母是S的员工select * from emp where ename like 'S%';-- 查找第三个字母
阿里开发手册的描述,禁止多表join: 手册上写着[强制],相信很多同学项目里面的代码都不满足这个要求. 但是关键问题是:不用join,这SQL究竟要怎么写?! 分解关联查询 即对每个要关联的表进行单表查询,然后将结果在应用程序中进行关联.下面的这个查询: SELECT * FROM tag JOIN tag_post ON tag_post.tag_id=tag.id JOIN post ON tag_post.post_id=post.id WHERE tag.tag = 'mysql';