1.去重distinct , group by
select distinct userid,username from 表名
select userid,username from 表名 group by userid,username
2.去空格 replace ltrim rtrim
Replace(name,' ','')
select ltrim(' test ') --去除左边的空格 select rtrim(' test ') --去除右边的空格 select ltrim(rtrim(' test ')) --去除首尾空格
3.表表关联语句 where条件关联、左/右关联
--用select更出要显示的字段 select b.ID,GID,GName,GStand,GInPrice,GOutPrice,GBaseClass,b_Date,b_OPerson,b_Time --来自给tbl_Goods表和tbl_SellBill表,给tbl_Goods表设置一个别名a,给tbl_SellBill表设置一个别名b from tbl_Goods a,tbl_SellBill b --两个表关联的条件是 a.id=b.gid where a.id=b.gid
select * from tableA a left join tableB b on a.id = b.id select * from tableA a right join tableB b on a.id = b.id select * from tableA a inner join tableB b on a.id = b.id left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) 只返回两个表中联结字段相等的行
4.求比计算机系中某一学生年龄小的其他系的学生(any)
方法一: select * from student where sdept!="CS" AND sage < ANY (select Sage from Student where Sdept="CS"); 方法二: select * from Student where Sdept!=’CS’ AND Sage < (select MAX(Sage) from Student where Sdept="CS");
5.多重句子
Teacher(tno, tname, salary, dno) Department(dno, dname) 查询语句: select Tname,Salary from Teacher where Dno = "D01" AND salary IN( select salary from teacher where Dno =(select DNO from department where Dname="国贸") );
6.带有exists的相关子查询
不相关子查询: select Sname from student where sno IN ( select sno from SC where Cno = "C1" ); 相关子查询 select Sname from student where exists (select * from SC where student.sno=SC.sno AND Cno = "C1" );
7.交,并,差
1 Union 取合集并过滤重复数据
--1 Union 取合集并过滤重复数据 --结果显示: 1,2,3,4,5 SELECT * FROM A UNION SELECT * FROM B;
2 Union all 取合集不过滤重复数据
--2 Union all 取合集不过滤重复数据 --结果显示:1,2,3,4,1,2,5 SELECT * FROM A UNION all SELECT * FROM B;
3 Intersect 取交集(两个表中都有数据)
--3 Intersect 取交集 --结果显示:1,2 SELECT * FROM A Intersect SELECT * FROM B;
4 except 取差集(取A-B的记录)
--4 except 取差集 --结果显示:3,4 SELECT * FROM A except SELECT * FROM B;