gpt4 book ai didi

MySQL SELECT 然后删除

转载 作者:行者123 更新时间:2023-11-29 02:25:18 25 4
gpt4 key购买 nike

我正在设置一个多服务器安装,其中一些用户数据根据用户的优先级评级(从 0 到 ... 的数字)在服务器之间同步。同步旨在作为懒惰的后台作业完成,具有更高优先级的用户可以更快地看到他们的数据同步。

为此我有一个 DBTable

CREATE TABLE IF NOT EXISTS `spiegel` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`priority` tinyint(1) NOT NULL,
`cql` varchar(4096) NOT NULL,
PRIMARY KEY (`id`),
KEY `priority` (`priority`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

所有非零优先级用户都记录了他们的 INSERT/DELETE/UPDATE 事务。 cron 作业定期(每 10 分钟)运行一个 PHP 脚本,该脚本需要一些(我想将其限制为 N 个条目,比如 100 个)条目并处理同步其他服务器上的数据库的过程。

我想做的是

  1. 选取最多 N 个按优先级排序的条目
  2. 从表中删除这些条目

第一位没问题

SELECT * FROM `spiegel` ORDER BY priority LIMIT 100;

这就是我对 SQL 的了解让我失望的地方。我不清楚如何有效地删除“拾取”条目。我能做的最好的事情就是创建一个包含已删除条目 ID 的 CSV 列表,然后使用

DELETE FROM `spiegel` WHERE id in idcsvlist

但是,我怀疑这是一种冗长的做事方式。如果有人能提出更好的方法,我将不胜感激。

最佳答案

mySQL subquery limit prblm Juz Refer the link

试试这个:

SELECT * FROM `spiegel` ORDER BY priority LIMIT 100;

Then

DELETE FROM spiegel WHERE id IN (select * from(SELECT id FROM `spiegel` ORDER BY priority LIMIT 100)as temp);

关于MySQL SELECT 然后删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23307242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com