Mysql笛卡爾積(附實現(xiàn)多表查詢代碼實例)
前言
實際開發(fā)中往往數(shù)據(jù)來自不同的表,所以需要多表聯(lián)合查詢。多表查詢是對多張表的數(shù)據(jù)取笛卡爾積:
簡單來說:就是 簡單的 排列組合。
把兩張表的記錄,放在一起進行排列組合的所有情況。
下面我們通過一個示例來進行說明:

排列組合如下:

通過以上可以發(fā)現(xiàn):
笛卡爾積的列數(shù)就是兩個表的列數(shù)之和( 3 + 2 = 5),行數(shù)則是兩個表的行數(shù)之積(2 * 4 = 8 )。因此,需要注意的是:我們在進行多表查詢的時候(計算笛卡爾積的過程),如果兩個表數(shù)據(jù)很大,就會非常低效,甚至成為危險操作。
代碼:

Tip(多表情況):如果是三個表的話,那么就是先將兩個表進行笛卡爾積運算,再用這個表與另外一個表進行笛卡爾積操作(以此類推)。
a.何為連接條件?
因為畢竟笛卡爾積只是簡單的將他們進行排列組合(并沒有進行篩選有效信息),我們將有效信息這一篩選的過程稱為:連接條件(student.classId = classes.classId)

b.聯(lián)合查詢實質(zhì)
得出結(jié)論:多表查詢/聯(lián)合查詢 = 笛卡爾積 + 連接條件 + 其他條件(具體需求)。
c.代碼實現(xiàn)

用 join on 實現(xiàn):

注意:
這里都有相同的記錄名(classId),所以這里通過 表名.列名 的方法實現(xiàn),如果不用則會報錯:

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL主鍵與外鍵設(shè)計原則 + 實戰(zhàn)案例解析
這篇文章詳細介紹了MySQL中的主鍵和外鍵,包括它們的基本概念、設(shè)計原則、應(yīng)用場景以及實戰(zhàn)案例,主鍵用于唯一標識表中的每一行記錄,而外鍵用于建立和加強表之間的關(guān)聯(lián)關(guān)系,感興趣的朋友跟隨小編一起看看吧2026-01-01
MySQL進行數(shù)據(jù)庫審計的詳細步驟和示例代碼
數(shù)據(jù)庫審計通過觸發(fā)器、內(nèi)置功能及第三方工具記錄和監(jiān)控數(shù)據(jù)庫活動,確保安全、完整與合規(guī),Java代碼實現(xiàn)自動化日志記錄,整合分析系統(tǒng)提升監(jiān)控效率,本文給大家介紹MySQL進行數(shù)據(jù)庫審計的詳細步驟和示例代碼,感興趣的朋友一起看看吧2025-07-07
net?start?mysql服務(wù)名無效的三種解決方法
這篇文章主要介紹了net?start?mysql服務(wù)名無效的三種解決方法,通過圖文結(jié)合的方式講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-08-08
dubbo中zookeeper請求超時問題:mybatis+spring連接mysql8.0.15的配置
這篇文章主要介紹了dubbo中zookeeper請求超時問題:mybatis+spring連接mysql8.0.15的配置,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01

