假设我有下一个表结构,表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。
答案 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)
以下代码段是伪代码。
抓住下一个 table_a id
:
SELECT id FROM table_a WHERE id > $currentLastId ORDER BY id ASC LIMIT 1
如果不是null
,请更新 table_b last_id
列。
示例:(参考 table_b 第一行)
SQL查询将是:
SELECT id FROM table_a WHERE id > 1 ORDER BY id ASC LIMIT 1
它将返回3
。