2017-03-20 4 views
1

私のクエリはUPDATEのLEFTが第二のテーブルに最後に挿入されたレコードを取得JOIN

UPDATE xxx_tickets 
LEFT JOIN xxx_ticket_comments 
ON xxx_tickets.ID = xxx_ticket_comments.ticket_id 
SET xxx_tickets.status = 'open' 
WHERE xxx_ticket_comments.private = '1' 
AND xxx_tickets.org_code = '9' 
AND xxx_tickets.ID = '2' 
ORDER BY xxx_ticket_comments.ID DESC LIMIT 1 

私が午前問題は、第二のテーブルxxx_ticket_commentsticket_idに関連する複数のレコードを持っているということです。私が必要とするのは、テーブルに参加して最後のレコードを取得することです。xxx_ticket_comments

ORDER BYは私のステートメントでは機能しませんが、私は達成しようとしているアイデアを得るために残しました。私はxxx_ticket_comments

で最も現在のレコードに基づいてxxx_ticketsを更新する必要が要するに

は、それが理にかなって願っています。

+0

_what_に関する最後の記録は? 「最後の」レコードを決定するために、列/注文を私たちに与える必要があります。 –

+0

thats私はあなたに注文を表示するために 'ORDER BY xxx_ticket_comments.ID DESC LIMIT 1'を残したのです。コメントテーブルには複数のレコードがありますが、私はちょうど列 'ID'に基づいて最後のものが必要ですDESC –

答えて

1

条件をWHERE句に移動できます。

UPDATE xxx_tickets t LEFT JOIN 
     xxx_ticket_comments tc 
     ON t.ID = tc.ticket_id AND 
      tc.private = 1 
    SET t.status = 'open' 
    WHERE t.org_code = 9 AND t.ID = 2 AND 
      tc.ID = (SELECT MAX(tc2.ID) 
        FROM xxx_ticket_comments tc2 
        WHERE tc2.ticket_id = tc.ticket_id AND 
         tc2.private = 1 
       ); 

残念ながら、ORDER BYLIMITJOINでサポートされていません。

+0

あなたは男、完全に働いています!本当にありがとう –

関連する問題