我有一个包含 2 个表的数据库,我正在尝试以特定方式连接它们。
表 1:简介
列:friend_ID、性别、出生年份、家乡、签到
表 2:教育程度
列:friend_ID、学校名称、学校类型
我想像这样左连接:
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。
感谢任何帮助,谢谢。
最佳答案
抱歉耽搁了。我创建了表并在本地主机上运行了该语句。
教育程度表: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/