-- 方法一
select user.name as u_n, client.name as c_n,
login.date
from login
join user on login.user_id=user.id
join client on login.client_id=client.id
where (login.user_id,login.date) in
(select user_id,max(date) from login group by login.user_id )
order by user.name;
-- 方法二
select u.name, c.name, d
from login as l
left outer join
client as c on c.id = l.client_id
left outer join
user as u on u.id = l.user_id
right outer join
(select user_id , max(date) as d from login group by user_id ) as a
on a.user_id = l.user_id
and a.d = l.date
order by u.name;
两个方法都可以,同时都给予我一些新的思路。
方法一:第一次得知,原来where子句可以同时过滤两个条件,甚至多个条件,只要在()中一一对齐就好。
方法二:在同时联结多个表格时,on子句要紧跟在每一个联结语句之后,而不是一起写在最后。

京公网安备 11010502036488号