![](/img/trans.png)
[英]Select from certain character till certain character only if condition is met mysql?
[英]Autoincrementing a field till a certain condition is met mysql
我有下表
SNo Value Item
其中Sno是也存在於另一個表中的列。 現在,我需要的是一個自遞增字段,如果sno的值是一個常數,它將繼續遞增,然后返回到0,一旦sno的值更改,便再次開始遞增。 有什么辦法嗎?
可以說我有四列:
SNO |Value |Item | AUtoIncrementingField
1 344 a 0
1 345 b 1
1 346 c 2
2 568 d 0
因此,當我說插入此表時,SNO的值從原來的值更改為原來的值時,自動遞增字段的值應返回0。是否有任何內置方法來執行此操作,或在mysql之上編寫一些代碼為達到這個。 如果沒有,我還必須唯一地標識屬於某個sno值的每個值/項目嗎?
盡管這對InnoDB毫無幫助,但值得指出的是MyISAM本身就支持此功能。 如使用AUTO_INCREMENT
:
MyISAM筆記
對於
MyISAM
表,可以在多列索引的第二列上指定AUTO_INCREMENT
。 在這種情況下,將為AUTO_INCREMENT
列生成的值計算為MAX( auto_increment_column ) + 1 WHERE prefix= given-prefix
。 當您要將數據放入有序組中時,這很有用。\n 創建表動物(\n grp ENUM('fish','mammal','bird')NOT NULL,\n id MEDIUMINT NOT NULL AUTO_INCREMENT,\n 名稱CHAR(30)NOT NULL,\n 主鍵(grp,id)\n )ENGINE = MyISAM;\n\n 將動物插入(grp,name)值\n ('哺乳動物','狗'),('哺乳動物','貓'),\n ('bird','penguin'),('fish','lax'),('mammal','whale'),\n (“鳥”,“鴕鳥”);\n\n 從動物中選擇*按grp,id排序;\n哪個返回:
\n + -------- + ---- + --------- +\n | grp | id | 名稱|\n + -------- + ---- + --------- +\n | 魚| 1 | 松懈\n | 哺乳動物| 1 | 狗|\n | 哺乳動物| 2 | 貓|\n | 哺乳動物| 3 | 鯨|\n | 鳥| 1 | 企鵝|\n | 鳥| 2 | 鴕鳥|\n + -------- + ---- + --------- +\n在這種情況下(當
AUTO_INCREMENT
列是多列索引的一部分),AUTO_INCREMENT
如果刪除的最大行值被重用AUTO_INCREMENT
在任何一組值。 即使對於MyISAM
表,通常不會重復使用AUTO_INCREMENT
值,也會發生這種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.