我有一个包含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/

10-12 18:40