我有一个包含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上运行了该语句。
教育表: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
)
关于mysql - 左联接表,然后看中列-SQL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21820057/