多表查詢
通過不同表中具有相同意義的關(guān)鍵字段,將多個表進行連接,查詢不同表中的字段信息。
連接方式
內(nèi)連接和外連接(左連接和右連接)
多表連接的結(jié)果通過三個屬性決定
方向性:在外連接中寫在前邊的表為左表、寫在后邊的表為右表
主附關(guān)系:主表要出所有的數(shù)據(jù)范圍,附表與主表無匹配項時標(biāo)記為null,內(nèi)連接時無主附表之分
對應(yīng)關(guān)系:關(guān)鍵字段中有重復(fù)值的表為多表,沒有重復(fù)值的表為一表
內(nèi)連接
按照連接條件合并兩個表,返回滿足條件的行。select 字段1[,…] from 表1[ inner] join 表2 on 表1.key=表2.key;
左連接
結(jié)果中除了包括滿足連接條件的行外,還包括左表的所有行。select 字段1[,…] from 表1 left join 表2 on 表1.key=表2.key;
右連接
結(jié)果中除了包括滿足連接條件的行外,還包括右表的所有行。select 字段1[,…] from 表1 right join 表2 on 表1.key=表2.key;
聯(lián)合查詢
把多條select語句的查詢結(jié)果合并為一個結(jié)果集。
? 被合并的結(jié)果集的列數(shù)、順序和數(shù)據(jù)類型必須完全一致
union去重:select 字段1[,字段2,…] from 表名 union select 字段1[,字段2,…] from 表名;
union all不去重: select 字段1[,字段2,…] from 表名 union all select 字段1[,字段2,…] from 表名;
MySQL全連接方法:左連接 union 右連接
SQL執(zhí)行順序:FROM -> ON -> JOIN -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> UNION -> ORDER BY -> LIMIT
多表連接規(guī)則:
確定查詢的信息在哪幾張表
確定表和表之間的對應(yīng)關(guān)系和主附關(guān)系
確定表和表之間的連接條件
一表作為主表可以保證維度的完整性,多表作為主表可以保證度量的準確性。在沒有明確表示需要保證維度完整性的情況下,優(yōu)先保證度量的準確性,所以將度量值所在的表作為主表。度量字段通常存在于多表中,因此通常情況下可以將多表作為主表進行外連接。
多表連接查詢:
先對第一個和第二個表按照兩表連接查詢,然后用用連接后的虛擬結(jié)果集和第三個表做連接查詢,以此類推,直到所有的表都連接上為止,最終形成一張?zhí)摂M結(jié)果集,然后根據(jù)where條件過濾虛擬結(jié)果集中的記錄,再根據(jù)select指定的列返回查詢結(jié)果。








暫無數(shù)據(jù)