MySQL 多表查詢方法

MySQL 多表查詢方法

MySQL 多表查詢用于從多個表中檢索數據,通常通過關聯字段(如外鍵)實現。以下是常見的多表查詢方式:

內連接(INNER JOIN)

內連接返回兩個表中匹配的行。語法如下:

SELECT 列名 
FROM 表1 
INNER JOIN 表2 ON 表1.關聯字段 = 表2.關聯字段;

示例:

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;

左連接(LEFT JOIN)

左連接返回左表的所有行,即使右表中沒有匹配。如果右表無匹配,則返回 NULL。語法如下:

SELECT 列名 
FROM 表1 
LEFT JOIN 表2 ON 表1.關聯字段 = 表2.關聯字段;

示例:

SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.dept_id = departments.dept_id;

右連接(RIGHT JOIN)

右連接返回右表的所有行,即使左表中沒有匹配。如果左表無匹配,則返回 NULL。語法如下:

SELECT 列名 
FROM 表1 
RIGHT JOIN 表2 ON 表1.關聯字段 = 表2.關聯字段;

示例:

SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.dept_id = departments.dept_id;

全外連接(FULL OUTER JOIN)

MySQL 不直接支持 FULL OUTER JOIN,但可以通過 UNION 實現:

SELECT 列名 FROM 表1 LEFT JOIN 表2 ON 關聯條件
UNION
SELECT 列名 FROM 表1 RIGHT JOIN 表2 ON 關聯條件;

交叉連接(CROSS JOIN)

交叉連接返回兩個表的笛卡爾積,即所有可能的組合。語法如下:

SELECT 列名 FROM 表1 CROSS JOIN 表2;

自連接(SELF JOIN)

自連接是表與自身連接,通常用于層級數據查詢。語法如下:

SELECT a.列名, b.列名 
FROM 表 a 
JOIN 表 b ON a.關聯字段 = b.關聯字段;

示例:

SELECT e1.name AS employee, e2.name AS manager
FROM employees e1
JOIN employees e2 ON e1.manager_id = e2.employee_id;

子查詢

子查詢嵌套在另一個查詢中,可以作為條件或臨時表使用。語法如下:

SELECT 列名 
FROM 表1 
WHERE 列名 IN (SELECT 列名 FROM 表2 WHERE 條件);

示例:

SELECT product_name 
FROM products 
WHERE category_id IN (SELECT category_id FROM categories WHERE category_name = 'Electronics');

多表連接

可以同時連接多個表,語法如下:

SELECT 列名 
FROM 表1 
JOIN 表2 ON 條件 
JOIN 表3 ON 條件;

示例:

SELECT orders.order_id, customers.customer_name, products.product_name
FROM orders
JOIN customers ON orders.customer_id = customers.customer_id
JOIN order_items ON orders.order_id = order_items.order_id
JOIN products ON order_items.product_id = products.product_id;

USING 關鍵字

當關聯字段名稱相同時,可以使用 USING 簡化語法:

SELECT 列名 
FROM 表1 
JOIN 表2 USING (關聯字段);

示例:

SELECT employees.name, departments.department_name
FROM employees
JOIN departments USING (dept_id);

NATURAL JOIN

自然連接自動匹配相同名稱的列,但可能帶來意外結果,建議謹慎使用:

SELECT 列名 FROM 表1 NATURAL JOIN 表2;

性能優化建議

為提升多表查詢性能,可以采取以下措施:

  • 為關聯字段創建索引
  • 只查詢必要的列,避免 SELECT *
  • 合理使用 JOIN 類型,減少不必要的數據檢索
  • 對大表查詢考慮分頁或限制結果集
  • 分析查詢執行計劃,優化慢查詢

多表查詢是 MySQL 中強大的功能,合理使用可以高效地從關聯表中檢索所需數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921035.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921035.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921035.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡斷連與業務中斷的全鏈路診斷與解決之道(面試場景題)

目錄 1. 網絡鏈路的“命脈”:從物理層到應用層的排查邏輯 物理層:別小看那一根網線 數據鏈路層:MAC地址和交換機的“恩怨情仇” 工具推薦:抓包初探 2. 網絡層的“幕后黑手”:IP沖突與路由迷霧 IP沖突:誰搶了我的地址? 路由問題:數據包的“迷路”之旅 3. 傳輸層與…

英偉達Newton與OpenTwins如何重構具身智能“伴隨式數采”范式

具身智能的“數據饑荒”:行業痛點與技術瓶頸的深度剖析1.1 具身智能的現狀與核心挑戰Embodied AI的落地之路面臨著多重嚴峻挑戰。在算法層面,實現通用智能仍需人類的持續介入,并且從感知到行動的認知映射尚未完全打通。在硬件層面&#xff0c…

STM32HAL 快速入門(十六):UART 協議 —— 異步串行通信的底層邏輯

大家好,這里是 Hello_Embed。在前幾篇中,我們通過環形緩沖區解決了按鍵數據丟失問題,而在嵌入式系統中,設備間的數據交互(如單片機與電腦、傳感器的通信)同樣至關重要。UART(通用異步收發傳輸器…

使用 C 模仿 C++ 模板的拙劣方法

如下所示,準備兩個宏,一個定義類型,一個定義容器大小。 使用時只要先定義這兩個宏,然后再包含容器頭文件就能生成不同類型和大小的容器了。但是這種方法只允許在源文件中使用,如果在頭文件中使用,定義不同類…

flume接收處理器:構建高可用與高性能的數據鏈路

flume接收處理器:構建高可用與高性能的數據鏈路 在大規模數據采集場景中,單點故障和性能瓶頸是兩大核心挑戰。Flume 通過 Sink Group 接收處理器(Processor) 機制,提供了強大的故障轉移(Failover&#xf…

高級Kafka應用之流處理

40 Kafka Streams與其他流處理平臺的差異在哪里? 什么是流處理平臺? “Streaming Systems”一書是這么定義“流處理平臺”的:流處理平臺(Streaming System)是處理無限數據集(Unbounded Dataset)…

Custom SRP - LOD and Reflections

1 LOD Groups 場景中對象越多,場景就越豐富,但是過多的對象,也會增加 CPU 和 GPU 的負擔.同時如果對象最終渲染在屏幕上后覆蓋的像素太少,就會產生模糊不清的像素點/噪點.如果能夠不渲染這些過小的對象,就能解決噪點問題,同時釋放 CPU GPU,去處理更重要的對象. 裁剪掉這些對象…

【Linux篇章】互聯網身份密碼:解密 Session 與 Cookie 的隱藏玩法和致命漏洞!

本篇摘要 本篇將承接上篇HTTP講解( 戳我查看 )遺留的關于Cookie與Session的介紹,在本篇,將會介紹Cookie的由來,作用,以及缺點等,進而引出Session,最后介紹一下它們的性質等&#xf…

Postman接口測試工具:高效管理測試用例與環境變量,支持斷言驗證及團隊協作同步

之前跟你們聊過能搭知識網絡的 Obsidian,今天換個偏向接口測試的方向 —— 給你們安利一個 Github 上的「Postman」,它是個接口測試工具,官網能直接下載(Postman: The Worlds Leading API Platform | Sign Up for Free&#xff09…

可可圖片編輯 HarmonyOS 上架應用分享

可可圖片編輯 HarmonyOS 上架應用分享 介紹 可可圖片編輯 原名 圖片編輯大師,因為上架審核的時候 ,提示與一些已有應用重名,為了避免沖突,需要改名字,所以苦心思考了一分鐘,就調整成 可可圖片編輯。 應用…

Notepad++近期版本避雷

近期Notepad若干版本存在投毒事件,雖然也歡迎大家使用替代軟件,但是Notepad作為一款開源軟件,如有需要也可以繼續白嫖使用,但是請務必避開若干埋雷版本! 經檢查,部分版本在幫助菜單中加入了有關tw的部分個人…

【lucene核心】impacts的由來

在 Lucene 的 Impact 概念(出現在 ImpactsEnum / Impact 對象里)中:字段 含義 freq 當前 term 在該文檔中出現了多少次(即詞頻 term frequency)。 norm 當前 文檔在該字段中的長度因子(即之前 norms 里保存…

基于Echarts+HTML5可視化數據大屏展示-惠民服務平臺

效果展示代碼結構&#xff1a;主要代碼實現 index.html布局 <!doctype html> <html><head><meta charset"utf-8"><title>雙數智慧公衛-傳染病督導平臺</title><meta http-equiv"refresh" content"60;urlhttps…

【Flink】DataStream API:執行環境、執行模式、觸發程序執行

目錄執行環境getExecutionEnvironmentcreateLocalEnvironmentcreateRemoteEnvironment執行模式流執行模式&#xff08;Streaming&#xff09;批執行模式&#xff08;Batch&#xff09;自動模式&#xff08;AutoMatic&#xff09;觸發程序執行DataStream API是Flink的核心層API&…

CentOS7.6

騰訊云服務器 騰訊云 產業智變云啟未來 - 騰訊 服務器在控制臺顯示 點擊進入面板&#xff0c;顯示所有信息 現在來安裝桌面的遠程控制軟件 寶塔SSH終端:一款同時支持SSH和SFTP客戶端的免費軟件! 點擊立即下載 在云服務器的實例列表復制公網ip 密碼就是服務器的密碼&#xff…

前端架構知識體系:常見圖片格式詳解與最佳實踐

前端開發必備&#xff1a; 在前端開發中&#xff0c;合理選擇圖片格式直接影響網頁加載性能、用戶體驗和帶寬成本。本文將系統梳理常見圖片格式&#xff0c;分析它們的優缺點、壓縮原理、兼容性和推薦使用場景&#xff0c;并提供前端優化實戰建議。1. JPEG / JPG 全稱&#xff…

ARM的編程模型

ARM的編程模型 ARM 的編程模型指的是從程序員&#xff08;特別是匯編程序員和編譯器設計者&#xff09;視角所看到的 ARM 處理器架構。它定義了程序員可以使用的資源、數據操作方式以及規則&#xff0c;主要包括&#xff1a;寄存器組、數據類型、內存訪問方式、執行狀態和異常處…

最大熵強化學習相比傳統強化學習,有什么缺點?

要理解最大熵強化學習&#xff08;MaxEnt RL&#xff09;相比傳統強化學習&#xff08;如DQN、PPO、DDPG等&#xff09;的缺點&#xff0c;首先需要明確兩者的核心差異&#xff1a;傳統RL的目標是“最大化累積獎勵”&#xff0c;而MaxEnt RL在該目標基礎上額外增加了“最大化策…

python生成器與協程深度剖析

目錄 生成器 傳統列表 vs 生成器對比 yield機制深度解析 生成器的高級用法 協程的演進:從yield到async/await 基于yield的協程 現代async/await語法 協程的錯誤處理和超時控制 異步生成器與異步迭代器 異步生成器 異步迭代器實現 實戰案例:異步爬蟲框架設計 生成器…

論文解讀:基于 77 GHz FMCW 毫米波雷達的艙內占位檢測

毫米波 (mm-Wave) 雷達是汽車應用&#xff08;例如高級駕駛輔助系統 (ADAS)&#xff09;的一種解決方案。本研究探索了商用毫米波雷達技術在車內應用領域的應用。本文提出了一種基于 77 GHz 毫米波雷達的車輛占用檢測器框架。本研究采用了德州儀器 (Texas Instruments) 的多輸入…