MySQL 通过删除旧数据并保持行数相同来添加新数据

标签 mysql sql mariadb

我有一个 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;

但是此代码结构在 IFELSE 语句上显示 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/

相关文章:

mysql - 当 select 语句中给出格式 'dd-MM-YYYY' 未按预期工作时按日期排序

php - 我需要什么才能使用 Joomla 作为在线应用程序开发环境

mysql - Zend Framework 1 查询,按满足条件对结果进行排序

mysql - 将旧 MySQL 数据库中的数据恢复到新的 Mac OSX 中

mysql - 聚合行以根据 MySQL 中的行内容创建新列

mysql - 无论如何如何将消息为零的日期包含到结果集中?

sql - 从两个数字构造几何类型

MySQL 选择自上一次发生一个月中的某一天以来的所有行

mysql - 在 SQL 中连接来自同一个表的两个外键

PHP 脚本不在 HTML 表单 'Submission' 上执行