主表查子表中数据

现有如下两张表,主表和子表
主表:

HTML code
id user_id user_pwd user_email 1 alexis 1111 123@126.com 2 ab 1234 1234@msn.com


子表:

HTML code
edu_id user_id edu_name edu_date 1 1 大学 2010-10-01 00:00:00 2 1 高中 2006-09-01 00:00:00


通过主表的id和子表的user_id关联,
要求查询每个用户最高的学历信息,即查出来的结果是

+
--
----+---------+----------+--------------+----------+---------------------+


|
 id   
|
 
user_id
 
|
 user_pwd 
|
 user_email   
|
 edu_name 
|
 edu_date            
|


+
--
----+---------+----------+--------------+----------+---------------------+


|
    
1
 
|
 alexis  
|
 
1111
     
|
 
123
@126
.com  
|
 大学     
|
 
2010
-
10
-
01
 
00
:
00
:
00
 
|


|
    
2
 
|
 ab      
|
 
1234
     
|
 
1234
@msn
.com 
|
 
NULL
     
|
 
NULL
                
|


+
--
----+---------+----------+--------------+----------+---------------------+


有如下几种实现方法:

1.
mysql > select * -> from ( -> select a.id,a. user_id ,a.user_pwd,a.user_email,b.edu_name,b.edu_date -> from users a left join edu b on a.id = b. user_id -> order by a.id,b.edu_date desc -> ) t -> group by id;
2.
SELECT * FROM `users` a1 LEFT JOIN (
SELECT a.user_id,a.edu_name,a.edu_date FROM edu a
LEFT JOIN edu b ON a.user_id=b.user_id AND a.edu_date>=b.edu_date 
GROUP BY a.user_id,a.edu_name,a.edu_date HAVING COUNT(*)=2) b1 ON a1.id=b1.user_id 3.
SELECT users. * , ( SELECT edu_name FROM edu WHERE edu. user_id = users.id ORDER BY edu_date DESC LIMIT 1 ) AS name1 FROM users
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值