mysql 中內連接、左連接和右連接的區別在于:內連接只返回同時在兩個表中匹配的行,而左連接返回左表所有行,包含匹配右表行,右連接返回右表所有行,包含匹配左表行。內連接語法:select * from table1 inner join table2 on table1.column1 = table2.column2;左連接語法:select * from table1 left join table2 on table1.column1 = table2.column2;右連接語法:sele
MySQL 中內連接、左連接和右連接的區別
內連接 (INNER JOIN)
只返回兩個表中具有匹配行的記錄。
匹配失敗的記錄將被丟棄。
左連接 (LEFT JOIN)
返回左表中的所有記錄,即使右表中沒有匹配的行。
右表中沒有匹配行的記錄將用 NULL 值填充。
右連接 (RIGHT JOIN)
返回右表中的所有記錄,即使左表中沒有匹配的行。
左表中沒有匹配行的記錄將用 NULL 值填充。
用法
內連接:用于查找兩個表之間具有匹配行的記錄,并丟棄不匹配的記錄。
左連接:用于查找左表的所有記錄,并包含右表中匹配行的記錄。
右連接:用于查找右表的所有記錄,并包含左表中匹配行的記錄。
語法
內連接:
<code class="sql">SELECT * FROM table1 INNER JOIN table2 ON table1.column1 = table2.column2;</code>
登錄后復制
左連接:
<code class="sql">SELECT * FROM table1 LEFT JOIN table2 ON table1.column1 = table2.column2;</code>
登錄后復制
右連接:
<code class="sql">SELECT * FROM table1 RIGHT JOIN table2 ON table1.column1 = table2.column2;</code>
登錄后復制
例子
假設我們有以下兩個表:
<code>Table1: | id | name | |---|---| | 1 | John | | 2 | Mary | | 3 | Bob | Table2: | id | address | |---|---| | 1 | 123 Main St | | 2 | 456 Elm St | | 4 | 789 Oak St |</code>
登錄后復制
內連接:
<code class="sql">SELECT * FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id;</code>
登錄后復制
結果:
id | name | address |
---|---|---|
1 | John | 123 Main St |
2 | Mary | 456 Elm St |
左連接:
<code class="sql">SELECT * FROM Table1 LEFT JOIN Table2 ON Table1.id = Table2.id;</code>
登錄后復制
結果:
id | name | address |
---|---|---|
1 | John | 123 Main St |
2 | Mary | 456 Elm St |
3 | Bob | NULL |
右連接:
<code class="sql">SELECT * FROM Table1 RIGHT JOIN Table2 ON Table1.id = Table2.id;</code>
登錄后復制
結果:
id | name | address |
---|---|---|
1 | John | 123 Main St |
2 | Mary | 456 Elm St |
4 | NULL | 789 Oak St |