我们经常用到2个表的联合查询,有时候用到内连接,全连接,以及左右连接,是不是很复杂呢?下面给演示一下他们的区别
首先有以下2个表:
- CREATE TABLE weather
- (
- city character varying(80) NOT NULL,
- temp_lo integer NOT NULL,
- temp_hi integer NOT NULL,
- prcp real,
- date date
- )
- WITH (
- OIDS=FALSE
- );
- ALTER TABLE weather OWNER TO postgres;
- -----------------------------------------------------------
- REATE TABLE cities
- (
- "name" character varying(80) NOT NULL,
- "location" point
- )
- WITH (
- OIDS=FALSE
- );
- ALTER TABLE cities OWNER TO postgres;
让我们想看看里面的数据吧
下面就开始内连接了。不用太多的说明,看图片就知道怎么回事了
看到了吗,inner 和 select * from weather,cities where city =name 输出一样的,都是一一对应的输出。这个我喜欢!
下面在看看全连接,左右连接的图片
可以看得出来,全连接呢,就是2个表的所有数据都被列举出来,如果他表中没有对于的数据呢,就补空。
左右连接为全连接的子集(我是这么认为的)左连接以前表为基准,后表没有的数据补控
右连接已后表为基准,前表没有的就补空。
原文链接:http://www.cnblogs.com/yongjun-zou/archive/2010/08/22/1805870.html
【编辑推荐】