从关联表的单个(LIMITed)行返回多个列

时间:2017-07-18 09:59:34

标签: mysql subquery

我有一张主表tblAssetMaster A和一张移动表tblMovement M我想提取所有资产及其当前位置,因此需要获取每个资产的最新动作条目。

字段

  • A:AssetID,AssetName
  • M:MovementID,AssetID,CurrentLocation,LocationUpdated

我查看了各种连接,子查询,派生查询,并且我对信息过载感到困惑。什么是最有效(最简单)的方法来检索这些信息。

2 个答案:

答案 0 :(得分:1)

您可以使用具有按AssetID

分组的最新MovementID的内部联接
select  A.AssetID, A.AssetName, M.MovementID, M.CurrentLocation, LocationUpdated
FROM tblAssetMaster A
INNER JOIN tblMovement M ON A.AssetID = M.AssetID
INNER JOIN (
  select 
      M.AssetID
    max(M.MovementID) my_mov_id
  from  tblMovement M
  group by M.AssetID
) T ON T.AssetID = M.AssetID AND T.my_mov_id = M.MovementID

答案 1 :(得分:0)

看起来好像用简单的回合写下它有助于解决这个问题:

SELECT A.AssetID, A.AssetName, M.MovementID, M.CurrentLocation, LocationUpdated
FROM tblAssetMaster A
LEFT JOIN tblMovement M ON 
A.AssetID = M.AssetID AND M.MovementID=

(SELECT MovementID FROM tblMovement M WHERE M.AssetID=A.AssetID ORDER BY LocationUpdated DESC LIMIT 1)