[英]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.