SQL更改值,到另一个表的下一行

时间:2012-08-03 12:15:35

标签: php mysql

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

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

表B:

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

我想将表格B last_id更改为表A 中的下一个匹配id

示例:(参考表格B的第一行

当前last_id 1 ,因此我需要将其值转发给表A 中的下一个更大ID

所以它会去:

1 -> 3 -> 4 -> 7

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

提前致谢。

注意:服务器运行MySQL。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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列。

  3. 示例:(参考 table_b 第一行)

    SQL查询将是:

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

    它将返回3