2016-08-23 82 views
1

我想連接表A和表B並顯示每輛卡車的最新條目。內部連接2個表的mysql查詢

  1. 表A列:TA ID,Truck_Num,SERIAL_NUM
  2. 表B列:TB ID,SERIAL_NUM,緯度,經度,日期時間

希望的輸出

Truck |  DateTime  | Serial_Num |  Lat |  Long     
    1  |  datestamp |  123  |  1 |  -1          
    2  |  datestamp |  456  |  2 |  -2 

使用連接查詢

SELECT a.Truck b.Lat b.Long b.DateTime FROM TB as b INNER JOIN TA AS a a.Serial_Num=b.Serial_Num; 

我試過了,但它只是給我最近的報名時間。

SELECT a.Truck b.Lat b.Long b.DateTime FROM TB as b INNER JOIN TA AS a a.Serial_Num=b.Serial_Num WHERE b.DateTime = (SELECT MAX(b.DateTime) FROM TB tb WHERE a.Truck_Num=Truck_Num); 

回答

2

這將顯示每輛卡車最近的項目。如果你想顯示信息的其餘部分是在所有行一樣,那麼你可以把它放在group by子句,如果沒有,那麼你必須做這個結果

SELECT Serial_Num, MAX(DateTime) FROM TB GROUP BY Serial_Num; 

這是一個連接加入你所要做的,如果數據不等於,你不能把它放在group by子句

SELECT Truck_Num, Lat, Long, maxDateTime FROM TB as b 
    INNER JOIN TA AS a ON a.Serial_Num=b.Serial_Num 
    INNER JOIN (SELECT Serial_Num, MAX(DateTime) as maxDateTime 
       FROM TB GROUP BY Serial_Num) as c 
       ON b.Serial_Num=c.Serial_Num AND maxDateTime = DateTime 
+0

謝謝李annis現在正在工作! – Zeb

+0

不客送@Zeb – Liannis