2

假设我有下一个表结构,表 A:

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

表 B:

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

我想将表的 B 更改为表 Alast_id的下一个匹配项。id

示例:(参考表B第一行

Currentlast_id1,所以我需要将它的值转发到 Table A 中下一个更大id

所以它会去:

1 -> 3 -> 4 -> 7

它也可以用 PHP 完成,但也许有一种方法可以将它保存在 SQL Server 中。

提前致谢。

注意:服务器运行 MySQL。

4

2 回答 2

3

以前的答案是正确的,但我认为不需要 +1,因为您只需要值 7

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

编辑:

现在它从 table_a 中选择比 table_b 上的 last_id 大的最小值

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. 如果没有null,请更新您的table_b 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 回答