为简洁起见,假设我们有一个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我想在查询中完成所有这些。没有触发器或存储过程。