0

私はこのSQLクエリを持っています:

INSERT INTO db1.outbox (DestinationNumber, TextDecoded)
SELECT User.CellPhone, '$SMSMessage' as TextDecoded
FROM db2.User
WHERE User.PurchaseDate BETWEEN 2012-01-01 AND 2012-01-31

「outbox」テーブルに複数の行を挿入します。このクエリを使用して、最初の行の ID 番号を簡単に取得できます。

SELECT LAST_INSERT_ID()

SELECT LAST_INSERT_ID()結果として532があり、34行が挿入されているとしましょう。

この 532 を「outbox_multipart」挿入という名前の他のテーブルの初期番号として使用し、自動インクリメントして結果が次のようになるようにする方法:

+------+----------------+----------+----------------------------------+
| ID   | phonenumber    | outboxID | message                          |
+------+----------------+---------------------------------------------+
|                      ......                                         |
| 1025 | 555-123456     | 532      | part 2 : hello there!            |
| 1026 | 555-999999     | 533      | part 2 : hello there!            |
| 1027 | 555-888888     | 534      | part 2 : hello there!            |
|                                                                     |
|               ...... 34 rows inserted here .......                  |
|                                                                     |
+------+----------------+---------------------------------------------+ 

outboxID 列は自動インクリメント列ではないことに注意してください。ただし、532 + 34 行 = 566 の自動インクリメント番号が必要です。

4

2 に答える 2

2

これで試してください

ALTER TABLE outbox_multipart AUTO_INCREMENT = 532;

532 から増加します。

「outboxID」も最初は自動インクリメントにする必要があることに注意してください

于 2012-09-27T04:17:56.073 に答える
0

mysqlで影響を受ける行の数と組み合わせてforループを使用するのはどうですか。PDO (これをお勧めします) を使用している場合は、これを使用できます http://php.net/manual/en/pdostatement.rowcount.php

したがって、次のようになります。

<?php 

 $dbh = new pdo (your_database_connection_details);
 $stmt = dbh->prepare() //do your initial insert into the outbox table
 $stmt->bindParams() //bind your parameters
 $stmt->execute();

 $out_box_id =  dbh->lastInsertId();
 $row_count = dbh->rowCount();

for(x=0;x<$row_count;x++){   
  //insert $out_box_id into the outboxID column
  $stmt->execute();
  $out_box_id = $out_box_id + 1;
 }

したがって、これは最初の挿入の最後に挿入された ID を取得し、それに $out_box_id を設定する必要があります。次に、 for ループ内に $out_box_id を挿入できます。ただし、実行されるループは、挿入された行数の何倍にもなり、各ループの最後に out_box_id を 1 ずつ増やします。

于 2012-09-27T04:39:09.617 に答える