1

我不确定这是否可能,但我正在尝试插入,同时选择一个值来做 +1。我这样做的原因是因为我的列是自动递增的,但是值到处都是。

这是我到目前为止所拥有的,它不会让我插入:

insert into channels set chanid=(select chanid from channels where parent=2
order by chanid desc limit 1)+1
4

4 回答 4

1
insert into channels(chanid)
select chanid+1 from channels where parent=2 
order by chanid desc limit 1 
于 2012-07-31T10:57:55.837 回答
1

尝试在子查询中使用别名。它对我有用。

insert into channels
set chanid=(
    select c.chanid
    from channels as c
    where c.parent=2
    order by c.chanid desc
    limit 1
)+1

参考:http ://bugs.mysql.com/bug.php?id=6980

于 2012-08-02T19:43:44.597 回答
0

如果我理解正确你的问题试试这个!

insert into channels set chanid=(select chanid+1 from channels where parent=2 order by chanid desc limit 1)
于 2012-07-31T10:58:14.297 回答
0

要重置auto-increment值,您可以尝试

SET @var_count = 0;

UPDATE channels 
SET chanid = (@var_count := @var_count + 1);

或者

删除auto-increment列并在其PRIMARY KEY上重新创建它。

于 2012-07-31T10:59:31.547 回答