id 列是自动递增的。我希望“rank”列与“id”列中新生成的自动增量值具有相同的值。(例如,说下一个自动增量值为 999 ......我希望排名也等于这个)
我可以在一个查询中做到这一点吗?或者我是否必须运行一个额外的查询来获取自动增量值之前
$query = "INSERT INTO $table1(id,name,rank)
VALUES('','bob','999')";
Run Code Online (Sandbox Code Playgroud)
您可以使用以下查询在一次插入中获取实际的 auto_increment 值:
insert into tablename (name,rank) values ( 'bob',(SELECT AUTO_INCREMENT
FROM information_schema.tables
WHERE table_name = 'tablename'
AND table_schema = DATABASE( ) ) )
Run Code Online (Sandbox Code Playgroud)
在此处查看更多信息 -如何在 mysql 中获取下一个自动递增 id
last_insert_id()仅在插入完成(成功与否)后设置。如果你尝试类似的事情
INSERT INTO yourtable (id, dupe_id) VALUES (null, last_insert_id())
Run Code Online (Sandbox Code Playgroud)
并希望dupe_id获得与分配给 相同的 ID id,然后...不,不会。last_insert_id()将返回在此特定语句之前运行的任何插入创建的 ID。
你必须做(基本上):
INSERT ...;
UPDATE yourtable SET dupe_id=last_insert_id() WHERE id=last_insert_id();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6944 次 |
| 最近记录: |