join 僅返回匹配行的行,而 left join 保留左表中的所有行,即使右表中沒有匹配的行。join:連接左表和右表,僅返回有匹配行的行。left join:連接左表和右表,保留左表中所有行,右表中不匹配的行填充 null 值。
Oracle 中的 JOIN 和 LEFT JOIN
JOIN 和 LEFT JOIN 是 Oracle 中用于組合來自不同表的相關(guān)數(shù)據(jù)的兩個重要操作符。它們之間的主要區(qū)別在于 LEFT JOIN 保留所有左表中的行,即使右表中沒有匹配的行,而 JOIN 僅返回具有匹配行的行。
JOIN
JOIN 返回僅當左表和右表都有匹配行時才返回的行。
如果任何一個表中沒有匹配行,則該行將被排除在結(jié)果之外。
JOIN 語法:
<code>SELECT * FROM left_table JOIN right_table ON left_table.column = right_table.column</code>
登錄后復(fù)制
LEFT JOIN
LEFT JOIN 返回左表中的所有行,即使右表中沒有匹配的行。
右表中不匹配的行將使用 NULL 值填充。
LEFT JOIN 語法:
<code>SELECT * FROM left_table LEFT JOIN right_table ON left_table.column = right_table.column</code>
登錄后復(fù)制
使用情況
JOIN:用于查找兩張表之間匹配的行。例如,查找所有在訂單表中具有訂單但不在發(fā)貨表中的客戶。
LEFT JOIN:用于查找匹配的行,并保留左表中所有行。例如,查找所有客戶及其相應(yīng)的最新訂單,即使某些客戶沒有訂單。
示例
<code>SELECT * FROM customers JOIN orders ON customers.id = orders.customer_id</code>
登錄后復(fù)制
此 JOIN 將返回所有具有匹配訂單的客戶。
<code>SELECT * FROM customers LEFT JOIN orders ON customers.id = orders.customer_id</code>
登錄后復(fù)制
此 LEFT JOIN 將返回所有客戶,即使他們沒有訂單。對于沒有訂單的客戶,orders
表中的列將填充 NULL 值。