簡潔にするために、numbers
2 つの列を持つテーブルがあると仮定しましょう: id
& number
:
CREATE TABLE numbers(
id INT NOT NULL AUTO_INCREMENT,
NUMBER INT NOT NULL,
PRIMARY KEY ( id )
);
number
列を自動インクリメントしたいのですが、 100 に達した後は 1 から再開し、次の要件を満たします。
- まだレコードがない場合は、
number
1 に設定します。 - テーブルにすでにレコードがある場合:
- 最後のレコード
number
が 100 未満の場合はnumber
、その + 1 に設定します。 - 最後のレコード
number
が 100 件以上の場合はnumber
1 に設定します。
- 最後のレコード
これが私がこれまでに持っているものです:
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私はクエリ内でこれをすべてやりたいです。トリガーやストアド プロシージャはありません。