2016-08-23 57 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