我有一个包含2个表的数据库,我正试图以特定的方式加入它们。
表1:简介
列:friend_ID,性别,birthyear,hometown,checkins
表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
然后我想将birthyear改为age(2013-birthyear)并将school_type编码为类别。 3个'研究生院',2个'学院',1个'高中'和0个'其他或没有数据',只保留每行的最高编号。 (教育表通常包含代表同一friend_ID的不同school_type的多行。
感谢任何帮助,谢谢。
答案 0 :(得分:0)
抱歉延误。我创建了表并在localhost上运行语句。
教育表:Screenshot
个人资料表:Screenshot
在SQL语句下面运行后的结果:Screenshot
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语句中缺少任何字段,显然可以添加更多字段。
结果:Screenshot
它显示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
)