为简洁起见,假设我们有一个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
)
)
这可行,但使用两个相同SELECT
的查询。
有什么办法可以去掉重复的SELECT
吗?
PS我想在查询中完成所有这些。没有触发器或存储过程。