首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以根据插入的日期从MySQL中删除记录?

问是否可以根据插入的日期从MySQL中删除记录?
EN

Stack Overflow用户
提问于 2021-02-12 13:08:20
回答 2查看 664关注 0票数 0

我有一张MySQL桌。该表没有时间戳,但我想删除在某个日期之后输入的所有记录。我试过使用created_at,但没有成功。

代码语言:javascript
复制
DELETE FROM table_name where created_at > '2021-02-09 00:00:00';

我的印象是,MySQL保持了一个插入日期,我可以在delete语句中利用这个日期。

编辑:

我没有create_at专栏,所以我做了修改我的问题。是否可以删除最后插入的100条记录。我有这样一个查询,它准确地选择了最后100条记录,但现在我如何删除它们:

代码语言:javascript
复制
SELECT * FROM (SELECT * FROM table ORDER BY id DESC LIMIT 100) var1
ORDER BY id ASC;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-12 13:13:23

不那是不可能的。

您需要在表定义中包含创建日期(并维护其值),以便根据创建的情况删除行。

关于删除id的OP编辑的修改:

如果您有一个递增的id,您可以很容易地按降序删除n行。只需订购和限制您的删除查询。

例如,删除具有最高id的100行:

代码语言:javascript
复制
DELETE FROM table ORDER BY id DESC LIMIT 100
票数 2
EN

Stack Overflow用户

发布于 2021-02-12 13:31:46

可以根据插入的日期从Mysql中删除记录吗?

如果您还记录了插入点处插入该行的日期,则这是唯一可能的。

幸运的是,使用一个新的MySQL表是非常容易的,需要进行最少的维护和维护。

当您将表设置为CREATE时,应该添加一个行,该行是一个timestamp列,然后可以通过将默认值设置为CURRENT_TIMESTAMP,将其设置为插入日期。然后,您可以在DELETE查询中使用此列,就像其他人所引用的那样。

(通常也可以对该列进行索引)。

示例

表创建

代码语言:javascript
复制
CREATE TABLE `database`.`tableName` ( 
    `id` INT NOT NULL AUTO_INCREMENT , 
    `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , /* THIS COLUMN */ 
    `some_column` VARCHAR(50) NULL DEFAULT NULL ,
    `some_other_column` INT NULL DEFAULT NULL , 
    PRIMARY KEY (`id`)
) ENGINE = InnoDB; 

注意,created_at列将保存行生成的日期和时间戳。

现在,当您插入数据时,您可以忽略该列,因为该值将由MySQL自动生成。

代码语言:javascript
复制
INSERT INTO `tableName` (`some_column`) VALUES ('horses!')

输出

id created_at some_column some_other_column 1 2021-02-12 13:28:53马!空

因此,您可以根据需要删除。

代码语言:javascript
复制
DELETE FROM tableName WHERE `created_at` > '2021-02-09 00:00:00'

警告

如果追溯添加created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP列定义,则时间戳将为该列生成的日期,而不是插入现有行的日期。但未来的插入将是正确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66172454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档