簡體   English   中英

左聯接表,然后看中列-SQL

[英]Left Join tables but then get fancy with the columns - SQL

我有一個包含2個表的數據庫,我正在嘗試以一種特定的方式將它們加入。

表1:簡介

列:friend_ID,性別,出生年份,家鄉,簽到

表2:教育

列:friend_ID,school_name,school_type

我想這樣退出:

    SELECT 
       friend_ID, birthyear, checkins 
   FROM Friend_Profile 
   LEFT JOIN 
       Education on Profile.friend_ID = Education.friend_ID

然后,我想將出生年份更改為年齡(2013-出生年份),並將school_type編碼為類別。 “研究生院”為3個,“學院”為2個,“高中”為1個,“其他或無數據”為0,並且只保留每行最高的數字。 (教育表通常包含多個行,這些行代表同一friend_ID的不同school_type。

任何幫助表示贊賞,謝謝。

抱歉耽擱了。 我創建了表並在localhost上運行了該語句。

教育表: 屏幕截圖

資料表: 截圖

在下面的SQL語句中運行后的結果: 屏幕截圖

SELECT profile.friend_id, birthyear, checkins, MAX( 
CASE WHEN school_type =  'High School'
THEN 1 
WHEN school_type =  'College'
THEN 2 
WHEN school_type =  'Graduate School'
THEN 3 
ELSE 0 
END ) AS school_type
FROM profile
LEFT JOIN education ON profile.friend_id = education.friend_ID
GROUP BY (
profile.friend_id
)

更新:

使用YEAR(CURDATE())獲取當前年份(2014),如果要使用去年,則將其替換為2013。 如果要添加的select語句中缺少任何字段,顯然可以添加更多字段以進行抓取。

結果: 屏幕截圖

它顯示14,因為我使用YEAR(CURDATE())而不是2013。您可以根據需要進行更改。

SELECT profile.friend_id, YEAR(CURDATE()) - birthyear as age, checkins, MAX( 
CASE WHEN school_type =  'High School'
THEN 1 
WHEN school_type =  'College'
THEN 2 
WHEN school_type =  'Graduate School'
THEN 3 
ELSE 0 
END ) AS school_type
FROM profile
LEFT JOIN education ON profile.friend_id = education.friend_ID
GROUP BY (
profile.friend_id
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM