2014-05-16 42 views
0

我有一個mysql查詢的問題。我想加入2表(如表A和表B):在其他表中連接2個具有多個ID的表並獲取最後一個記錄

表A中:

ID_A date name 
1  2014 hhh 
2  2014 jjj 
3  2014 kkk 

表B:

ID_B ID_A mark 
1  1  90 
2  1  85 
3  2  70 
4  2  75 
5  3  90 
6  3  80 

我想加入表A和表B,我做了使用組由它,但問題是我想在表B. 每個ID_A(基於ID_B)的最後recort我已經做了這個查詢:

select * from `table A` a join `table B` b on b.ID_A=a.ID_A group by a.ID_A 

,但它沒有選擇表B中的每個ID_A的最後一個記錄,也沒有我這個查詢:

select * from `table A` a join `table B` b on (select ID_A from `table B` order by ID_B desc limit 1)=a.ID_A group by a.ID_A 

,但也失敗了。

我想要的結果是這樣的:

ID_A ID_B mark name 
1  2  85  hhh 
2  4  75  jjj 
3  6  80  kkk 

真的需要你的幫助傢伙..

回答

0

試試這個:

SELECT a.ID_A, b.ID_B, mark, name 
FROM `table A` a JOIN `table B` b ON b.ID_A=a.ID_A 
WHERE ID_B IN (SELECT MAX(ID_B) FROM `table B` GROUP BY ID_A) 
GROUP BY a.ID_A 

SQL Fiddle

+0

如果日期列在表B中的東西,然後我改變ID_B有約會嗎?我試過但0行受到影響。它是相似的,不是嗎? –

+0

你的意思是你改變ID_B的列類型爲止? –

1

這裏的加入一個選項表回到自己使用max聚合:

select a.id_a, a.name, 
    b.id_b, b.mark 
from tableA a 
    join tableB b on a.id_a = b.id_a 
    join (
     select id_a, max(id_b) maxidb 
     from tableB 
     group by id_a 
    ) c on b.id_a = c.id_a and b.id_b = c.maxidb 
+0

我會選擇b.id_a - 但那只是我。 – Strawberry

相關問題