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

最後に挿入された行を見つけるためにSELECTMAX(id)などを実行することは概念的に正しいですか?

    これは主観的なようですが、私はノーと言います。概念的には正しくありません。理由は次のとおりです。

    • 最後に挿入された行が必要です
    • ただし、クエリは最大のidを調べます 値

    はい、最大IDと最新の挿入には何らかの関係がありますが、次の点を考慮してください。

    • 最後に挿入された行が削除された場合はどうなりますか?

    MySQLに関する回答:異なる結果が得られます。これが失敗するために、マルチスレッドまたは複数のプロセスが存在する必要さえないことに注意してください。これは、2つの異なるものであるためです(確かに、同じ結果が得られることがよくあります)。

    select max(id) from <tablename>
    

    vs

    select last_insert_id()
    

    (どちらが正しいかを推測します。)

    @Demsは、OPがあいまいであると指摘しました。私の要点を明確にします:

    私たちは3つの異なる情報について話している:

    • 最大id
    • id セッションに固有の、最後に挿入された行の数
    • id (セッションに関係なく)テーブルに最後に挿入された行の数

    危険なことは、ある質問をすると別の質問に正しい答えが返ってくることがあるということです。常にではありません



    1. SQLiteで主キーを持つ重複行を削除する6つの方法

    2. MySQL5.5以降のBIGINT範囲外エラー

    3. 2つのフィールドの値が同じであるレコードの作成を防ぐにはどうすればよいですか?

    4. Webサイトメンバーの電子メールアドレスを自動的に作成するにはどうすればよいですか?