3

今のところphpMyAdminでの作業:

orderテーブル構造:

OrderID     int(11)  auto_increment
CustomerID  varchar(50)
BillAddr    varchar(200)
ShipAddr    varchar(200)
Date            date
Total           double

テーブルには現在、異なるOrderIDを持つ4行のデータがあります。

SQL:

SELECT LAST_INSERT_ID() FROM `order`

結果:

LAST_INSERT_ID()
0
0
0
0

私は4番目の行を期待してOrderIDいました-1つの数字だけですが、phpMyAdminの各行に対して0を取得しました。

4

5 に答える 5

7

LAST_INSERT_ID()最後に挿入された行のIDを返し、どのテーブルにもバインドされません。したがって、新しい行を作成する場合:

INSERT INTO table VALUES('a', 'b', 'c');

最後のID(新しい主キーの値が何であれ)を返します。

SELECT LAST_INSERT_ID();
=> 123 

詳細については、マニュアルをご覧ください。

LAST_INSERT_ID()(引数なし)は、最後に実行されたINSERTステートメントによってAUTO_INCREMENT列に設定され、そのような列に影響を与える最初の自動生成値を表すBIGINT(64ビット)値を返します。たとえば、AUTO_INCREMENT値を生成する行を挿入した後、次のような値を取得できます。

テーブルの最後のIDを取得したいだけの場合は、次のように実行できます。

SELECT id FROM table ORDER BY id DESC LIMIT 1;
于 2012-07-02T23:12:20.473 に答える
3

マニュアルに記載されているように:

LAST_INSERT_ID()(引数なし)は、そのような列に影響を与えるために最後に実行されたステートメントによって列に設定された最初の自動生成値をBIGINT表す(64ビット)値を返します。たとえば、値を生成する行を挿入した後、次のような値を取得できます。AUTO_INCREMENT INSERTAUTO_INCREMENT

mysql> SELECT LAST_INSERT_ID(); 
        -> 195
于 2012-07-02T23:15:06.523 に答える
1

このようにしてください:

INSERT INTO `one`(`id`, `name`) VALUES (NULL,'shivam');
select last_insert_id();

挿入後に他のクエリを実行しないでください。両方を一緒に実行する必要があります

于 2012-10-12T09:04:42.857 に答える
0

私は同じ問題を抱えていました、解決策は同時にクエリを実行することでした。つまり、最初のクエリと2番目の(last_insert_id)クエリを同時に実行する必要があります。2つの異なる実行としてではありません。

于 2013-05-01T15:50:11.087 に答える
0

テーブルを指定することにより、そのテーブルのすべての行に対してselectステートメントを繰り返します。

同じ値を繰り返す以外は、クエリの結果には影響しません。

phpmyadminで実行している場合は、持続的接続がTRUEに設定されていることを確認することをお勧めします。そうでない場合、LAST_INSERT_ID()の結果として常に0を受け取ります。

于 2013-11-18T14:37:48.820 に答える