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ì)
得出結論:多表查詢/聯(lián)合查詢 = 笛卡爾積 + 連接條件 + 其他條件(具體需求)。
c.代碼實現(xiàn)

用 join on 實現(xiàn):

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

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
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
dubbo中zookeeper請求超時問題:mybatis+spring連接mysql8.0.15的配置
這篇文章主要介紹了dubbo中zookeeper請求超時問題:mybatis+spring連接mysql8.0.15的配置,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01

