2017-12-18 252 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 ;