-1

サブクエリを最適化する方法がわかりません:

SELECT *
FROM rp_clientAffectationHistory as T1
WHERE rp_clientAffectationHistoryID in (SELECT MAX(rp_clientAffectationHistoryID)
        FROM rp_clientAffectationHistory as T2
GROUP BY `rp_clientID`)
AND `rp_userID` = 57

同じ「rp_clientID」に対して多数の重複エントリがあります。最新の rp_clientAffectationHistoryID を持つレコードのみが必要です。

4

3 に答える 3

1

必要なものは次のようなものです:

SELECT *
  FROM Rp_Clientaffectationhistory AS T1
left join Rp_Clientaffectationhistory as T2 on (T1.Rp_Clientid = T2.Rp_Clientid) and T1.Rp_Clientaffectationhistoryid < T2.Rp_Clientaffectationhistoryid
where T2.Rp_Clientaffectationhistoryid is null
and T1.Rp_Userid = 57

それは役に立ちますか?

于 2013-12-06T09:36:50.650 に答える
0

私はあなたがすべてのエントリを1つだけ取得したいと思いますrp_clientID-

あなたが逃したことの1つはrp_clientID、内部クエリの内部を確認することです-

SELECT *
  FROM Rp_Clientaffectationhistory AS T1
 WHERE Rp_Clientaffectationhistoryid IN
       (SELECT MAX(Rp_Clientaffectationhistoryid)
          FROM Rp_Clientaffectationhistory AS T2
         WHERE T1.Rp_Clientid = T2.Rp_Clientid
         GROUP BY Rp_Clientid)
   AND Rp_Userid = 57

それはあなたが探していたものですか?

于 2013-05-20T07:47:47.180 に答える
0

SQL サーバーの場合は、次を試してください。

SELECT * FROM(
    SELECT *, ROW_NUMBER() over (partition by rp_userID order by rp_clientAffectationHistoryID desc) Rnum 
    FROM rp_clientAffectationHistory
    WHERE rp_userID = 57
)x
WHERE Rnum=1
于 2013-05-20T07:50:01.767 に答える