我有一个 test2
表,其创建方式如下:
CREATE TABLE test2(
name VARCHAR(20),
time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
);
现在我只想在表中存储 5 行。因此,每次添加数据时,它都会检查行数是否= 5,然后删除最旧的数据并添加新数据,否则只添加数据。这是代码:
IF(COUNT(name) FROM test2 >= "5")
THEN
(DELETE FROM test2 WHERE time = MIN(time) AND (INSERT INTO test2 (name)
VALUE('icecream')));
ELSE
(INSERT INTO test2(name) VALUE('icecream'))
END IF;
但是此代码结构在 IF
和 ELSE
语句上显示 2 个错误。重新格式化以获得正确的输出。
最佳答案
或者,您可以删除第 4 行以上并添加第 5 行。不需要任何程序,但需要两个查询
DELETE FROM test2 WHERE id IN
(
SELECT id FROM
(
SELECT id FROM test2 ORDER BY ts DESC LIMIT 4,999
) t
);
INSERT INTO test2 (`name`) VALUES ('icecream');
关于MySQL 通过删除旧数据并保持行数相同来添加新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45236903/