9、SQL基础整理(两表连接exists,join on,union)

exists的用法

select *from haha where exists (select *from bumen where bumen.code = haha.bumen and bumen.name = ‘销售部‘ )and age>35

(运行方法为逐条查询)

select name,sex,age,(select name from bumen where bumen.code = haha.bumen)as 部门 from haha

select name,sex,age,(select name from bumen where bumen.code = haha.bumen)as 部门,(select ceo from bumen where bumen.code = haha.bumen)as ceo from haha

连接两表之间的简便写法:

1.

 

select haha.name,sex,age,bumen.name,ceo from bumen,haha where haha.bumen = bumen.code

2.join on(顺序可颠倒)

select haha.name,sex,age,bumen.name,ceo from haha

join bumen on haha.bumen = bumen.code

3.full的用法

insert into haha values(15,‘实物‘,‘nv‘,34,5)

insert into bumen values(6,‘保安部‘,‘保证安全‘,null,null)

select bumen.name,zhineng,ceo,haha.name,sex,age from haha

full join bumen on bumen.code = haha.bumen

4left的用法

在没有关系的情况下,只显示join左边表的所有数据,不显示右边表的数据

5right的用法

同上

(left 和right都是与所全部显示的数据的排序方式一致)

union的用法

将两列连接起来,必须满足数据类型对应,具有自动去重的功能(按照拼音或者数字排列,打乱原有的顺序)

select*from haha where code > 10

union

select*from haha where code < 5

select name,bumen from haha where code > 10

union

select ceo,code from bumen

时间: 2024-10-11 11:03:21

9、SQL基础整理(两表连接exists,join on,union)的相关文章

SQL 基础:Select语句,各种join,union用法

一.基本的SELECT语句 1. “*”的注意事项:在SELECT语句中,用*来选取所有的列,这是一个应该抵制的习惯. 虽然节省了输入列名的时间,但是也意味着获得的数据比真正需要的数据多的多.相应的,也会降低应用程序的性能及网络性能. 良好的规则是只选所需. 2. join子句 join是用来定义如何从多个表中选取数据并组合成一个结果集. join必需是因为(1)我们所要获取的所有信息并不都在一个表中,或者(2)所要返回的信息都在一个表中,但是其上设置的条件信息却在另一个表中. join的共同点

row_number() over 两表连接分页SQL

--总条数 SELECT COUNT(1) FROM dbo.osaleh INNER JOIN dbo.osaled ON dbo.osaleh.osaleh_osalehID=dbo.osaled.osaled_osalehID WHERE --两表连接分页 SELECT * FROM( SELECT ROW_NUMBER() OVER ( ORDER BY osaleh_osalehID DESC ) AS rownum, dbo.osaleh.osaleh_osalehID, dbo.o

SQL Server中多表连接时驱动顺序对性能的影响

原文:SQL Server中多表连接时驱动顺序对性能的影响 本文出处:http://www.cnblogs.com/wy123/p/7106861.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 最近在SQL Server中多次遇到开发人员提交过来的有性能问题的SQL,其表面的原因是表之间去的驱动顺序造成的性能问题,具体表现在(已排除其他因素影响的情况下),存储过程偶发性的执行时间超出预期,甚至在调试的时候

sql表连接left join,right join,inner join三者之间的区别

sql表连接left join,right join,inner join区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 (以左表数据为基准,不足补为NULL)right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录(以右表数据为基准,不足补为NULL)inner join(等值连接) 只返回两个表中联结字段相等的行(条件on之相等的数据) 举例如下: ---------------------------------------

SQLSERVER表连接(INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL JOIN,CROSS JOIN,CROSS APPLY,OUTER APPLY)

1 常用表连接(inner join,left join,right join,full join,cross join) if object_id(N'table1',N'U') is not null drop table table1 if object_id(N'table2',N'U') is not null drop table table2 create table table1(id int,name varchar(20)) insert into table1 select

SQL Server三种表连接原理

http://msdn.microsoft.com/zh-cn/library/dn144699.aspx 简介 在SQL Server中,我们所常见的表与表之间的Inner Join,Outer Join都会被执行引擎根据所选的列,数据上是否有索引,所选数据的选择性转化为Loop Join,Merge Join,Hash Join这三种物理连接中的一种.理解这三种物理连接是理解在表连接时解决性能问题的基础,下面我来对这三种连接的原理,适用场景进行描述. 嵌套循环连接(Nested Loop J

SQL 基础之多表查询(十)

JOINS 类型和它的语法 Natural joins(自然连接): – NATURAL JOIN 子句 – USING 子句 – ON 子句 自连接 非等值连接 Outer joins(外连接): – LEFT OUTER JOIN(左外连接) – RIGHT OUTER JOIN(右外连接) – FULL OUTER JOIN(全外连接) 笛卡尔积 – Cross join(交叉连接) 语法: select table1.column, table2.column from table1 [

一条SQL语句查询两表中两个字段

首先描述问题,student表中有字段startID,endID.garde表中的ID需要对应student表中的startID或者student表中的endID才能查出grade表中的name字段,这时候问题就来了,如果需要一条sql一句同时查出garde表中的两条数据怎么办?(两表的关联字段为 SID) sql="select b.name,c.name as name2 from student a,garde b,grade c where a.SID=b.SID and a.SID=c

7、SQL基础整理(子查询)

子查询 (用来进行两表等之间的查询) ***括号里面的查询只能显示一个列的信息 select *from haha where age in ( select MAX(age) from haha where bumen = '销售部' )and bumen in ( select bumen from haha group by bumen having COUNT(*)>5 ) --练习:按年龄从小到大排序后第..人的信息 select top 3 *from haha where code