我有一张MySQL桌。该表没有时间戳,但我想删除在某个日期之后输入的所有记录。我试过使用created_at,但没有成功。
DELETE FROM table_name where created_at > '2021-02-09 00:00:00';我的印象是,MySQL保持了一个插入日期,我可以在delete语句中利用这个日期。
编辑:
我没有create_at专栏,所以我做了修改我的问题。是否可以删除最后插入的100条记录。我有这样一个查询,它准确地选择了最后100条记录,但现在我如何删除它们:
SELECT * FROM (SELECT * FROM table ORDER BY id DESC LIMIT 100) var1
ORDER BY id ASC;发布于 2021-02-12 13:13:23
不那是不可能的。
您需要在表定义中包含创建日期(并维护其值),以便根据创建的情况删除行。
关于删除id的OP编辑的修改:
如果您有一个递增的id,您可以很容易地按降序删除n行。只需订购和限制您的删除查询。
例如,删除具有最高id的100行:
DELETE FROM table ORDER BY id DESC LIMIT 100发布于 2021-02-12 13:31:46
可以根据插入的日期从Mysql中删除记录吗?
如果您还记录了插入点处插入该行的日期,则这是唯一可能的。
幸运的是,使用一个新的MySQL表是非常容易的,需要进行最少的维护和维护。
当您将表设置为CREATE时,应该添加一个行,该行是一个timestamp列,然后可以通过将默认值设置为CURRENT_TIMESTAMP,将其设置为插入日期。然后,您可以在DELETE查询中使用此列,就像其他人所引用的那样。
(通常也可以对该列进行索引)。
示例
表创建
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自动生成。
INSERT INTO `tableName` (`some_column`) VALUES ('horses!')输出
id created_at some_column some_other_column 1 2021-02-12 13:28:53马!空
因此,您可以根据需要删除。
DELETE FROM tableName WHERE `created_at` > '2021-02-09 00:00:00'警告
如果追溯添加created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP列定义,则时间戳将为该列生成的日期,而不是插入现有行的日期。但未来的插入将是正确的。
https://stackoverflow.com/questions/66172454
复制相似问题