簡潔にするために、numbers2 つの列を持つテーブルがあると仮定しましょう: id& number:
CREATE TABLE numbers(
id INT NOT NULL AUTO_INCREMENT,
NUMBER INT NOT NULL,
PRIMARY KEY ( id )
);
number列を自動インクリメントしたいのですが、 100 に達した後は 1 から再開し、次の要件を満たします。
- まだレコードがない場合は、
number1 に設定します。 - テーブルにすでにレコードがある場合:
- 最後のレコード
numberが 100 未満の場合はnumber、その + 1 に設定します。 - 最後のレコード
numberが 100 件以上の場合はnumber1 に設定します。
- 最後のレコード
これが私がこれまでに持っているものです:
INSERT INTO `numbers` (`number`)
VALUES (
IF(
IFNULL(
(SELECT `number`
FROM `numbers` as n
ORDER BY `id` DESC
LIMIT 1),
0
) > 99,
1,
IFNULL(
(SELECT `number`
FROM `numbers` as n
ORDER BY `id` DESC
LIMIT 1),
0
) + 1
)
)
これは機能しますが、2 つの同一のSELECTクエリを使用します。
重複を削除する方法はありますSELECTか?
PS私はクエリ内でこれをすべてやりたいです。トリガーやストアド プロシージャはありません。