2012-07-31 102 views
1

我不確定是否有可能,但我正在嘗試做一個插入,同時選擇一個值做+1。我這樣做的原因是因爲我的列是自動增量,但值都遍佈各地。插入時選擇?

這裏就是我有這麼遠,它不會讓我做插件:

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

回答

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

+0

這 - 這工作完美無瑕,非常感謝! – thevoipman 2012-08-02 20:33:57

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

不工作我試圖直接不通過一個PHP頁面 – thevoipman 2012-07-31 11:19:19

0

如果我理解正確你的問題試試這個!

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

做到這一點到MySQL我以前嘗試過這種方式,它仍然沒有讓我 - 它說,我可以」 t指定目標表「渠道」從udpate從caluse – thevoipman 2012-07-31 11:07:34

0

要重置auto-increment值,你可以嘗試

SET @var_count = 0; 

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

下降auto-increment柱,用PRIMARY KEY它重新創建它。

+0

我仍然需要做一個插入...我如何做一個插入,並採取各自的等值的最後chanid? – thevoipman 2012-07-31 11:05:43

+0

你可以使用LAST_INSERT_ID()來fecth最後插入的ID表 – Omesh 2012-07-31 11:07:27

+0

請給我一個關於如何做到這一點的例子 - 我沒有使用PHP這個 – thevoipman 2012-07-31 11:19:49