2

次のテーブル構造、テーブル A があるとします。

| id |
|----|
| 3  |
| 4  |
| 7  |

表 B:

| id | title | last_id |
|----|-------|---------|
| 1  |   a   |    1    |
| 2  |   b   |    2    |
| 3  |   c   |    3    |

Table's Bを Table Aからlast_id次の一致に変更したい。id

例: (表の B の最初の行を参照)

Currentlast_id1なので、その値をTable Aの次の大きな IDに転送する必要があります。

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

1 -> 3 -> 4 -> 7

PHP でもできますが、SQL Server に保持する方法があるかもしれません。

前もって感謝します。

注: サーバーは MySQL を実行します。

4

2 に答える 2

3

前の回答は正しいですが、値7が必要なだけなので+1は必要ないと思います

UPDATE table_b
   SET last_id = (SELECT MAX(id) FROM table_a)

編集:

これで、table_b の last_id よりも大きい table_a から最小値が選択されます

UPDATE table_b
   SET last_id = (SELECT MIN(id) FROM table_a WHERE id>last_id)
于 2012-08-03T12:21:27.250 に答える
1

次のスニペットは擬似コードです。

  1. 次のtable_aを取得 idします:

    SELECT id FROM table_a WHERE id > $currentLastId ORDER BY id ASC LIMIT 1
    
  2. そうでない場合は、 table_bnullを更新します。 last_id

例: ( table_bの最初の行を参照)

SQLクエリは次のようになります。

SELECT id FROM table_a WHERE id > 1 ORDER BY id ASC LIMIT 1

戻り3ます。

于 2012-08-03T12:38:48.667 に答える