sql >> データベース >  >> RDS >> Mysql

ORDER BY、LIMIT、および複数のテーブルを使用したUPDATE構文

    解決策は、結合の一部としてFROM句にORDERBYとLIMITをネストすることです。これにより、最初に更新する正確な行(ta.id)を見つけてから、更新をコミットできます。

    UPDATE tableA AS target
        INNER JOIN (
          SELECT ta.id
          FROM tableA AS ta
            INNER JOIN tableB AS tb ON tb.id = ta.user_id
            WHERE tb.username = '$varName'
            ORDER BY ta.datetime DESC
            LIMIT 1) AS source ON source.id = target.id
        SET col1 = '$var';
    

    この正確なトピックに関する優れた投稿については、バロンシュワルツ(別名Xaprb)への帽子のヒント: http://www.xaprb.com/blog/2006/08/10/how-to-use- order-by-and-limit-on-multi-table-updates-in-mysql /



    1. SQLServer2005からMySQLにデータをエクスポートする方法

    2. PDOマルチクエリSQLSTATE[HY000]:一般的なエラー

    3. PostgreSQLでの再帰トリガーの防止

    4. 列名または指定された値の数がテーブル定義と一致しません