好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > postgreSQL中的內連接和外連接實現操作

postgreSQL中的內連接和外連接實現操作

熱門標簽:地圖標注要花多少錢 電銷機器人能補救房產中介嗎 400電話申請客服 天津開發區地圖標注app 電話機器人怎么換人工座席 移動外呼系統模擬題 江蘇400電話辦理官方 濟南外呼網絡電話線路 廣州電銷機器人公司招聘

測試數據:

city表:

create table city(id int,name text);
insert into city values(0,'北京'),(1,'西安'),(2,'天津'),(3,'上海'),(4,'哈爾濱'),(5,'西藏')

person表:

create table person(id int,lastname char(20));
insert into person values(0,'Tom'),(2,'Lily'),(3,'Mary'),(5,'Coco');
select * from city;

select * from person;

一:內連接:

1.inner join

inner join(等值連接) 只返回兩個表中聯結字段相等的行

sql語句:

select * from city inner join person on city.id = person.id;

也可以寫成:

select * from city join person on city.id = person.id;

結果如下:

從結果可以看出,表格中顯示出了city.id=person.id的記錄,它顯示出了符合這個條件的記錄。

二:外連接:

1.full outer join

full outer join(全外連接)返回參與連接的兩個數據集合中的全部數據

sql語句:

select * from city full outer join person on city.id = person.id;

也可以寫成:

select * from city full join person on city.id = person.id;

結果如下:

從結果可以看出,全外連接得到了city和person表中的全部數據

2.left outer join

left outer join(左連接) 返回包括左表中的所有記錄和右表中連接字段相等的記錄

sql語句:

select * from city left outer join person on city.id = person.id;

也可以寫成:

select * from city left join person on city.id = person.id;

結果如下:

從結果可以看出,左外連接和全外連接的結果一模一樣?

我們在給person中添加一行數據:

insert into person values(9,'Kiki');

在重新執行:

select * from city full join person on city.id = person.id;

結果如下:

select * from city left join person on city.id = person.id;

結果如下:

兩個結果對照著看,left join顯示出了city中的所有記錄和person連接字段相等的記錄

3.right outer join

right outer join(右連接) 返回包括右表中的所有記錄和左表中連接字段相等的記錄

sql語句:

select * from city right outer join person on city.id = person.id;

也可以寫成

select * from city right join person on city.id = person.id;

結果如下:

從結果可以看出,person中的記錄被全部顯示出來,而city中的顯示的數據是根據連接字段相等的記錄

補充:PostgreSQL表連接:內連接,外連接,自連接,交叉連接

搜了搜,基本上都是寫內連接、外連接、交叉連接這三種類型,但我發現PostgreSQL還有自連接。不妨一并寫來做個記錄。

先說概念:

內連接,就是兩個表逐行匹配,匹配上的內容都顯示,沒有匹配的都不顯示。

外連接有三種,左外連接,右外連接,全外連接。

左外連接是以左表為基礎,左表內容全部顯示,右表有匹配到左表的則顯示,否則不顯示。

右外連接是以右表為基礎,右表內容全部顯示,左表有匹配到右表的則顯示,否則不顯示。

全外連接是以兩表為基礎,顯示三部分內容,一部分是內連接的內容,即兩表匹配的內容,一部分是左表有而右表無的,一部分是左表無右表有的。

自連接是逐行,用當前這行數據和這個表中其他行進行匹配。

交叉連接最省事,笛卡爾積,左表m行右表n行,則結果是m*n行。

下面展示具體例子來幫助理解。

下面是兩個表的內容。

mydb=# select * from weather;
   city   | temp_lo | temp_hi | prcp |  date
---------------+---------+---------+------+------------
 San Francisco |   46 |   50 | 0.25 | 1994-11-27
 San Francisco |   43 |   57 |  0 | 1994-11-29
 Hayward    |   37 |   54 |   | 1994-11-29
(3 行記錄)
 
mydb=# select * from cities;
   name   | location
---------------+-----------
 San Francisco | (-194,53)
 London    | (0,51)
(2 行記錄)

內連接有兩種寫法:

mydb=# SELECT *
mydb-#   FROM weather, cities
mydb-#   WHERE city = name;
   city   | temp_lo | temp_hi | prcp |  date  |   name   | location
---------------+---------+---------+------+------------+---------------+-----------
 San Francisco |   46 |   50 | 0.25 | 1994-11-27 | San Francisco | (-194,53)
 San Francisco |   43 |   57 |  0 | 1994-11-29 | San Francisco | (-194,53)
(2 行記錄) 
 
mydb=# SELECT *
mydb-#   FROM weather INNER JOIN cities ON (weather.city = cities.name);
   city   | temp_lo | temp_hi | prcp |  date  |   name   | location
---------------+---------+---------+------+------------+---------------+-----------
 San Francisco |   46 |   50 | 0.25 | 1994-11-27 | San Francisco | (-194,53)
 San Francisco |   43 |   57 |  0 | 1994-11-29 | San Francisco | (-194,53)
(2 行記錄)

外連接有三種:左外連接,右外連接,全外連接。

mydb=# SELECT *
mydb-#   FROM weather LEFT OUTER JOIN cities ON (weather.city = cities.name);
   city   | temp_lo | temp_hi | prcp |  date  |   name   | location
---------------+---------+---------+------+------------+---------------+-----------
 San Francisco |   46 |   50 | 0.25 | 1994-11-27 | San Francisco | (-194,53)
 San Francisco |   43 |   57 |  0 | 1994-11-29 | San Francisco | (-194,53)
 Hayward    |   37 |   54 |   | 1994-11-29 |        |
(3 行記錄) 
 
mydb=# select * from weather right outer join cities on(weather.city=cities.name);
   city   | temp_lo | temp_hi | prcp |  date  |   name   | location
---------------+---------+---------+------+------------+---------------+-----------
 San Francisco |   43 |   57 |  0 | 1994-11-29 | San Francisco | (-194,53)
 San Francisco |   46 |   50 | 0.25 | 1994-11-27 | San Francisco | (-194,53)
        |     |     |   |      | London    | (0,51)
(3 行記錄) 
 
mydb=# select * from weather full outer join cities on(weather.city=cities.name);
   city   | temp_lo | temp_hi | prcp |  date  |   name   | location
---------------+---------+---------+------+------------+---------------+-----------
 San Francisco |   46 |   50 | 0.25 | 1994-11-27 | San Francisco | (-194,53)
 San Francisco |   43 |   57 |  0 | 1994-11-29 | San Francisco | (-194,53)
 Hayward    |   37 |   54 |   | 1994-11-29 |        |
        |     |     |   |      | London    | (0,51)
(4 行記錄)

表交叉連接:

mydb=# SELECT *
mydb-#   FROM weather, cities;
   city   | temp_lo | temp_hi | prcp |  date  |   name   | location
---------------+---------+---------+------+------------+---------------+-----------
 San Francisco |   46 |   50 | 0.25 | 1994-11-27 | San Francisco | (-194,53)
 San Francisco |   46 |   50 | 0.25 | 1994-11-27 | London    | (0,51)
 San Francisco |   43 |   57 |  0 | 1994-11-29 | San Francisco | (-194,53)
 San Francisco |   43 |   57 |  0 | 1994-11-29 | London    | (0,51)
 Hayward    |   37 |   54 |   | 1994-11-29 | San Francisco | (-194,53)
 Hayward    |   37 |   54 |   | 1994-11-29 | London    | (0,51)
(6 行記錄)

表自連接:

mydb=# SELECT W1.city, W1.temp_lo AS low, W1.temp_hi AS high,
mydb-#   W2.city, W2.temp_lo AS low, W2.temp_hi AS high
mydb-#   FROM weather W1, weather W2
mydb-#   WHERE W1.temp_lo  W2.temp_lo
mydb-#   AND W1.temp_hi > W2.temp_hi;
   city   | low | high |   city   | low | high
---------------+-----+------+---------------+-----+------
 San Francisco | 43 |  57 | San Francisco | 46 |  50
 Hayward    | 37 |  54 | San Francisco | 46 |  50
(2 行記錄)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 解決postgresql 數字轉換成字符串前面會多出一個空格的問題
  • PostgreSQL 遠程連接配置操作
  • postgreSQL中的case用法說明
  • 基于postgreSql 常用查詢小結
  • postgresql 查詢字符串中是否包含某字符的操作
  • postgresql 替換空格 換行和回車的操作

標簽:濮陽 溫州 辛集 海西 昭通 榆林 杭州 寶雞

巨人網絡通訊聲明:本文標題《postgreSQL中的內連接和外連接實現操作》,本文關鍵詞  postgreSQL,中的,內連,接和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《postgreSQL中的內連接和外連接實現操作》相關的同類信息!
  • 本頁收集關于postgreSQL中的內連接和外連接實現操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 铜铜铜铜铜铜铜铜好大无打码 | 精品精品国产高清a毛片| 纲手裸乳被爆?白浆的漫画| 国产亚洲欧美ai在线看片| 国产黄色三级三级三级| 老人太bbwbbwbbwbbw| 亚洲人成人| 婷婷综合橙色AV精品综合视频| 主人强制残忍调教私奴小说| 校花被校长啪到腿软| 九浅一深还是九深一浅哪个好| yy6080新视觉伦理| 鲁死你资源站| 免费国产情侣偷吃禁果在线| 美女扒开撒尿口| 色香视频首页SXMV| bl催眠调教高h文| 娇嫩小仙女的玉液横流| 国产精品久久久久久久久精爆| 欧美福利社| 动漫美女脱丝袜露内内图片| 欧美白嫩少妇蜜桃AV| 美女销魂一区二区| 暖暖免费在线播放高清| 国产精品情侣自拍| 中文字幕人成乱码熟女香港| 高质量h文| 在线观看免费成人| 色哟哟?入口国产精品| 女人被男人艹| 尤物网视频| 边摸边吃奶边叫床| 亚洲午夜视频在线观看| 调教日记H肉yin荡np打屁股| 中国男同chinesebooys视频| 张行长的动作越来越粗| 熟女 - Porn视频| 国产偷窥盗摄精品视频浪潮AV| 国产全黄裸体一级A片| 共妻高肉双腿打开h| 午夜精品久久久久久久无码软件 |