mysql 使用内连接查询 2 个表
mysql query of 2 tables with inner join
我想加入 Table A 和 Table B 并显示每辆卡车的最新条目。
- Table A列:TA ID,Truck_Num,Serial_Num
- Table 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);
这将显示每辆卡车的最新物品。如果您要显示的其余信息在所有行中都相同,那么您可以将其放在 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
应该可以,你可以检查这个问题:
SELECT
ta.Truck,
tb.Lat,
tb.Long,
MAX(tb.DateTime),
ta.Serial_Num as Serial_Num
FROM
TB as tb
INNER JOIN
TA as ta
ON (tb.Serial_Num = ta.Serial_Num)
GROUP BY
tb.Serial_Num
我想加入 Table A 和 Table B 并显示每辆卡车的最新条目。
- Table A列:TA ID,Truck_Num,Serial_Num
- Table 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);
这将显示每辆卡车的最新物品。如果您要显示的其余信息在所有行中都相同,那么您可以将其放在 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
应该可以,你可以检查这个问题:
SELECT
ta.Truck,
tb.Lat,
tb.Long,
MAX(tb.DateTime),
ta.Serial_Num as Serial_Num
FROM
TB as tb
INNER JOIN
TA as ta
ON (tb.Serial_Num = ta.Serial_Num)
GROUP BY
tb.Serial_Num