2017-12-18 249 views
1

我有两个表:子查询两个表

__Table R_____

ID.....CustID....DATE 
1......1.........2000-01-01 
2......2.........2000-01-02 
3......2.........2000-01-03 
4......2.........2000-02-22 
5......1.........2000-03-23 

__Table Customers______

ID....NAME 
1.....Lucas 
2.....Michael 

请,我怎么可能做一个SELECT返回的最后来自每个客户的NAME的日期? (这种方式):

Lucas......2000-03-23 
Michael....2000-02-22 
+5

提示:'JOIN','GROUP BY','MAX()'。 –

回答

0

您可以使用:

select c.name, max(r.date) 
from table_customers c 
join table_r r on r.custid = c.id 
group by c.id, c.name; 
+0

它也有效!谢谢。但是,为什么GROUP BY c.name?通过c.id分组是不够的? –

+0

我不知道你的'sql_mode'值。所以,如果你已经将它设置为“ONLY_FULL_GROUP_BY”,那么如果你只用c.id进行分组,它会引发错误。如果不是,那么它会从该组返回任何'name'值。 – DecoderReloaded

0

的选择需要使用MAX将返回最新的日期:

SELECT customer.name, MAX(r.date) 

join来自这两个表:

FROM r INNER JOIN customer ON r.custid = customer.id 

但是,如果你需要在每个客户的最新的日期,你需要group它:

GROUP BY r.custid; 
+0

谢谢,它的工作原理! –

0
select c.name, r.date 
from table_customers c 
join table_r r on r.custid = c.id 
ORDER BY r.date DESC 
LIMIT 2 ;