如何解决MySQL的删除所有行,除了每个ID的最新的
我有一个名为devices_last_insert
的表
数据库获取一些设备(大约4种不同的device_id
)的数据更新,并将它们存储在另一个表中。
在devices_last_insert
表中,我想为每个设备保存上一个时间戳。
目前,它保存了每一行,如您在此处看到的:
将数据添加到该表的触发器写在获取数据的表中:
BEGIN
INSERT INTO devices_last_insert(devices_last_insert.timestamp,devices_last_insert.device_id)
VALUES(NEW.timestamp,NEW.device);
END
我想更改触发器,以便在带有时间戳的device_id
中不存在devices_last_insert
的情况下添加一行(原始表中的行有一个timestamp
列),如果device_id
中已经存在devices_last_insert
,则会更新时间戳。
问题在于NEW
查询中不能使用DELETE
。
解决方法
您不需要手动删除旧记录,MySQL可以为您完成繁重的工作。
您可以在device_id
上创建唯一索引(或主键),然后在重复的语法上使用插入:
INSERT INTO devices_last_insert
(devices_last_insert.timestamp,devices_last_insert.device_id)
VALUES (NEW.timestamp,NEW.device)
ON DUPLICATE KEY UPDATE timestamp = VALUES(timestamp)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。