SQL實(shí)現(xiàn)LeetCode(175.聯(lián)合兩表)
[LeetCode] 175.Combine Two Tables 聯(lián)合兩表
Table: Person
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
+-------------+---------+
PersonId is the primary key column for this table.
Table: Address
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
+-------------+---------+
AddressId is the primary key column for this table.
Write a SQL query for a report that provides the following information for each person in the Person table, regardless if there is an address for each of those people:
FirstName, LastName, City, State
LeetCode還出了是來到數(shù)據(jù)庫的題,來那么也來做做吧,這道題是第一道,相對(duì)來說比較簡單,是一道兩表聯(lián)合查找的問題,我們需要用到Join操作,關(guān)于一些Join操作可以看我之前的博客SQL Left Join, Right Join, Inner Join, and Natural Join 各種Join小結(jié),最直接的方法就是用Left Join來做,根據(jù)PersonId這項(xiàng)來把兩個(gè)表聯(lián)合起來:
解法一:
SELECT Person.FirstName, Person.LastName, Address.City, Address.State FROM Person LEFT JOIN Address ON Person.PersonId = Address.PersonId;
在使用Left Join時(shí),我們也可以使用關(guān)鍵Using來聲明我們相用哪個(gè)列名來進(jìn)行聯(lián)合:
解法二:
SELECT Person.FirstName, Person.LastName, Address.City, Address.State FROM Person LEFT JOIN Address USING(PersonId);
或者我們可以加上Natural關(guān)鍵字,這樣我們就不用聲明具體的列,MySQL可以自行搜索相同的列:
解法三:
SELECT Person.FirstName, Person.LastName, Address.City, Address.State FROM Person NATURAL LEFT JOIN Address;
參考資料:
https://leetcode.com/discuss/21216/its-a-simple-question-of-left-join-my-solution-attached
https://leetcode.com/discuss/53001/comparative-solution-between-left-using-natural-left-join
到此這篇關(guān)于SQL實(shí)現(xiàn)LeetCode(175.聯(lián)合兩表)的文章就介紹到這了,更多相關(guān)SQL實(shí)現(xiàn)聯(lián)合兩表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SQL實(shí)現(xiàn)LeetCode(183.從未下單訂購的顧客)
- SQL實(shí)現(xiàn)LeetCode(182.重復(fù)的郵箱)
- SQL實(shí)現(xiàn)LeetCode(181.員工掙得比經(jīng)理多)
- SQL實(shí)現(xiàn)LeetCode(180.連續(xù)的數(shù)字)
- SQL實(shí)現(xiàn)LeetCode(178.分?jǐn)?shù)排行)
- SQL實(shí)現(xiàn)LeetCode(177.第N高薪水)
- SQL實(shí)現(xiàn)LeetCode(176.第二高薪水)
- SQL實(shí)現(xiàn)LeetCode(184.系里最高薪水)
相關(guān)文章
MySQL學(xué)習(xí)第五天 MySQL數(shù)據(jù)庫基本操作
MySQL學(xué)習(xí)第五天我們將針對(duì)MySQL數(shù)據(jù)庫進(jìn)行基本操作,創(chuàng)建、修改、刪除數(shù)據(jù)庫等一系列操作進(jìn)行學(xué)習(xí),感興趣的小伙伴們可以參考一下2016-05-05
解析MySQL創(chuàng)建外鍵關(guān)聯(lián)錯(cuò)誤 - errno:150
本篇文章是對(duì)MySQL創(chuàng)建外鍵關(guān)聯(lián)錯(cuò)誤-errno:150進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Windows下通過cmd進(jìn)入DOS窗口訪問MySQL數(shù)據(jù)庫
這篇文章主要介紹了Windows下通過cmd進(jìn)入DOS窗口訪問MySQL數(shù)據(jù)庫的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
mysql報(bào)錯(cuò)RSA?private?key?file?not?found的解決方法
當(dāng)MySQL報(bào)錯(cuò)RSA?private?key?file?not?found時(shí),可能是由于MySQL的RSA私鑰文件丟失或者損壞導(dǎo)致的,此時(shí)可以重新生成RSA私鑰文件,以解決這個(gè)問題2023-06-06
深入淺析MySQL 中 Identifier Case Sensitivity問題
這篇文章主要介紹了MySQL 中 Identifier Case Sensitivity,需要的朋友可以參考下2018-09-09
MySQL按時(shí)間進(jìn)行表分區(qū)的方法代碼
本文介紹如何在MySQL中創(chuàng)建按月份分區(qū)的表,并通過修改配置文件或使用數(shù)據(jù)庫事件來實(shí)現(xiàn)自動(dòng)分區(qū),文中通過代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-09-09
Canal進(jìn)行MySQL到MySQL數(shù)據(jù)庫全量+增量同步踩坑指南
這篇文章主要介紹了使用Canal作為遷移工具,將數(shù)據(jù)庫從A服務(wù)器遷移至B服務(wù)器,為了盡量減少遷移導(dǎo)致的停機(jī)時(shí)間,考慮使用全量遷移+增量同步的方式2023-10-10
Windows下MySQL服務(wù)無法停止和刪除的解決辦法
我在 Windows 操作系統(tǒng)上,使用解壓壓縮包的方式安裝 MySQL。遇到一點(diǎn)問題,下面通過本文給大家分享Windows下MySQL服務(wù)無法停止和刪除的解決辦法,需要的朋友可以參考下2017-02-02

