mysql - 左连接表,但随后喜欢列 - SQL

标签 mysql sql database

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

相关文章:

php - 通过 Zend Framework 的 select() 传递带空格的列名

Mysql:如何在连接中命名子选择以避免连接相同的子选择?

sql - Select 不返回 Oracle DB 中 Date 类型的预期结果

mysql - SQL查询优化,如果第一个为空则按其他行排序

sql - 给予多次折扣后的产品最终价格

javascript - HTML5本地数据库回调

mysql - 如何打印结果集中的值而不包含列中的任何重复记录

mysql - Nodejs.Mysql 模块未安装

mysql - 如何仅允许来自同一 'number'的不同输入

mysql - 您如何通过全文 boolean 搜索来查找术语 C++?