1. 程式人生 > >sql多表操作-內連線inner join、外連線left/right (out) join和交叉連線

sql多表操作-內連線inner join、外連線left/right (out) join和交叉連線

1 內連線、外連線和交叉連線的區別

內連線:匹配2個表中的相同欄位,沒有的不加入結果集。

外連線:匹配2個表中共有的欄位。分為3種: 左連線——以左邊的為基準,右表中沒有的(相同欄位值)為null; 右連線——以右邊的為基準,左表中沒有的為null; 全連線——左右2邊的結果都在表中。

交叉連線:交叉聯接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯接也稱作笛卡爾積。(用的少,一般情況下的,都是有一項是相同的,如id相同的情況下,否則沒有意義。)

2 基本語法

兩表連線
select a., b. from a inner join b on a.a1 = b.b1

三表連線
select a.* , c.c1
from a
inner join b on a.a1= b.b1
inner join c on c.c1=b.b1

或者
select a.*,c.c1
from (select a., b. from a inner join b where a.a1=b.b1) as b inner join c where c.c1=b.b1

3 圖示

表如下
這裡寫圖片描述
內連線
這裡寫圖片描述
外連線
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
交叉連線
這裡寫圖片描述

相關推薦

sql操作-連線inner join連線left/right (out) join交叉連線

1 內連線、外連線和交叉連線的區別 內連線:匹配2個表中的相同欄位,沒有的不加入結果集。 外連線:匹配2個表中共有的欄位。分為3種: 左連線——以左邊的為基準,右表中沒有的(相同欄位值)為null; 右連線——以右邊的為基準,左表中沒有的為null;

SQL聯合查詢(交叉連線連線連線)

連線查詢:                 交叉連線:             &nbs

SQL中的交叉連線(CROSS JOIN)連線(INNER JOIN)連線(OUTER JOIN)

1、交叉連線CROSS JOIN 如果不帶條件子句,交叉連線將會返回被連線的兩個表的笛卡爾積,返回結果的行數等於兩個錶行數的乘積; select  *from 表名 cross join  表名  on  條件表示式  2、內連線 INNER JOIN 內連線僅返回那些滿足連線條件的資料行。在內連線中,

SQL聯合查詢(LEFT JOIN)條件差異

logs 技術分享 .cn where 聯合查詢 uid exist 包含 into 查詢A: select a.*,b.* into Bus605115_ON_Where_And --(642 行受影響) from PositionN a left join szt

sql-查詢JOIN與分組GROUP BY

group 邊表 AS inner left join sdn AR full join ner 一、內部連接:兩個表的關系是平等的,可以從兩個表中獲取數據。用ON表示連接條件 SELECT A.a,B.b FROM At AS A INNER JOINT Bt AS B

Day055--MySQL--外來鍵的變種,的關係,單查詢,查詢, 連線,左右連線,全連線

表和表的關係 ---- 外來鍵的變種 * 一對多或多對一 多對多 一對一 如何找出兩張表之間的關係 分析步驟: #1、先站在左表的角度去找 是否左表的多條記錄可以對應右表的一條記錄,如果是,則證明左表的一個欄位foreign key 右表一個欄位(通常是id) #2、再站在右表的角度去找 是否右表

Linux—mysql 語言的sql語言操作

SQL JOINS 兩個表合併 交叉連線:笛卡爾乘積 內連線: 等值連線:讓表之間的欄位以“等值”建立連線關係; 不等值連線 自然連線:去掉重複列的等值連線 自連線 外連線: 左外連線: FROM tb1T J LEFOIN tb

MyBatis中的操作情形一:一對一(方式1:一條sql語句查詢,MyBatis3.0可以用associationcollection標籤)

MyBatis支援多表操作,即可以將資料庫中多表的關係對映到物件之間的關係中 表與表之間的關係可以有:一對一,一對多,多對多 關係一演示案例:人和身份證是一對一的,分別建兩個表person和card,其中person的cardid欄位外來鍵關聯card的id,

資料庫基礎 四張圖理解資料庫之第三張 資料庫連線 JDBC 理解 操作(附帶相關資源)第三天

JDBC JDBC: 概述: Java Data Base Connectivity,Java資料庫連線 就是Java程式碼操作不同資料庫(DBMS)。 JDBC就是Java定義的用來操作不同資料庫的規範,本質就是一些介面和類。

8mysql資料庫查詢(資料並集連線左連結右連結連線

目錄 1 內連線 場景:A和B資料 的交集 2 左連結 場景1:得到 “AB交集後和A“ 的並集  (得到A的所有資料+滿足某一條件的B的資料) 場景2:得到A減去AB的交集  (A中所有資料減去同時滿足B某一條件的資料) 3 右連結 場景1:得到“A

sql關聯查詢使用JOIN..ON與where的優化場景

先說明原因:關鍵字: on資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。在使用left jion時,on和where條件的區別如下:1、 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記

查詢(連線連線的混合使用)(union聯合)

內連線與外連線的混合使用: 格式:select*from表1 left other join 表2 on 條件 inner join 表3 on條件 查詢工資高於公司平均工資的所有員工列:顯示員工資訊,部門名稱,上級領導,工資等級 如下: SELECT

SQL進階語法的操作

字段名 alt 面對復雜 com 匹配 tex img 表操作 bsp AS別名 多張表聯合操作,如果表多,字段名長,不方便閱讀。這裏我們可以使用 as 關鍵字來對字段名設置別名。 as也可以省略,看個人喜好,在這裏我還是支持把 as 寫上,這樣我們在面對復雜的SQ

(十二)Hibernate中的操作(1):單向對一

art 保存 int gen round t對象 情況 映射文件 拋出異常 由“多”方可知“一”方的信息,比如多個員工使用同一棟公寓,員工可以知道公寓的信息,而公寓無法知道員工的信息。 案例一: pojo類 public class Department {

(十四)Hibernate中的操作(4):單向一對一

odin utf-8 lds () clas string 方式 rdb style 案例一: 註解方式實現一對一 UserBean.java package bean; import java.io.Serializable; import javax.pers

【JAVAEE學習筆記】hibernate03:操作,級聯練習:添加聯系人

row tac 默認值 rac user except pro intra com 一、一對多|多對一 1、關系表達  表中的表達      實體中的表達      orm元數據中表達     一對多 <!-- 集合,一對多關系,在配置文件中配置 -

SQL連接

sql語法 right 完全 rom 沒有 右連接 連接 關聯 笛卡爾積 俺是菜鳥在這裏寫博就是被了跟大家交流,如果那裏不對的地方請指出,小弟加以改正! 多表查詢分為 內、外連接 外連接分為左連接(left join 或left outer join)、右連接(right

java dbcp連接池,大數據處理循環操作插入事例

als postgresq postgres map() err manage fas space false 基礎連接池類: package com.yl.sys.dao; import java.io.InputStream;import java.sql.Connec

Hibernate筆記3--操作-導航查詢

test ransac mod 多表 private getc als 級聯 默認 一.一對多操作 1.構造實體類及編寫配置文件: 一方: 1 // 一個Customer對應多個linkman 2 private Set&l

SQL聯查總結

col users 內連接 class pan 右外連接 查詢 sql 查詢條件 交叉連接:(不常用)返回兩個表的笛卡爾乘積(也即全組合排列)中符合查詢條件的數據行。 內連接返回連接表中符合連接條件和查詢條件的數據行。 左外連接返回符合連接條件和查詢條件(即:內連接)的