删除除给定查询获取的所有记录之外的所有记录

     2023-03-29     66

关键词:

【中文标题】删除除给定查询获取的所有记录之外的所有记录【英文标题】:Delete all records but one that are fetched by a given query 【发布时间】:2021-08-02 19:22:05 【问题描述】:

我有两个表reminderreminder_users,在这些表之间有一个外键约束,reminder_users 是子记录。我想要做的是删除这些拖表中的几个冗余行。到目前为止,我设法通过以下查询找到冗余行:

select r.name, r.remark, u.user_id, u.deadline , count (*)
from reminder r 
inner join reminder_users u on r.id = u.reminder_id 
and u.user_id = u.user_id 
and u.deadline = u.deadline having count(*)> 1
group by r.name, r.remark, u.user_id, u.deadline

所以冗余行与外键id绑定,子记录具有相同的user_iddeadline,父记录具有相同的名称和相同的备注。

having count 子句指出了多余的行,但我想保留其中一条记录,以便计数 > 1 不再为真,因此我不能在删除查询中使用此子句.此外,为了能够从提醒中删除行,首先必须删除来自提醒用户的子数据。

我猜想使用rowidselect max (rowid) 之类的东西应该有可能,但我不知道如何构建删除查询。

非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

你在正确的轨道上。您可以通过删除所有rowid 不是子查询返回的delete duplicate rows:

delete reminder 
where  rowid not in ( 
  select min ( r.rowid )
  from reminder r 
  inner join reminder_users u 
  on r.id = u.reminder_id 
  and u.user_id = u.user_id 
  and u.deadline = u.deadline 
  group by r.name, r.remark, u.user_id, u.deadline
)

子查询中不需要having 子句。

注意:这假设每个reminderreminder_users 中有一行。如果不是这种情况,这也会删除没有用户的提醒,因为子查询不会返回它们。

【讨论】:

非常感谢!

在 SQL 查询中选择除最大记录之外的所有记录

】在SQL查询中选择除最大记录之外的所有记录【英文标题】:selectallbutmaxrecordinSQLquery【发布时间】:2013-03-0617:05:16【问题描述】:我一直在努力让它发挥作用,但我无处可去。我需要的是以下内容:我需要能够为特定表选择除MA... 查看详情

如何在 Kotlin 中使用 anko 删除除最新 10 条记录之外的所有记录?

】如何在Kotlin中使用anko删除除最新10条记录之外的所有记录?【英文标题】:Howcandeleteallrecordsexceptlatest10recordswithinKotlinwithanko?【发布时间】:2018-05-1108:39:44【问题描述】:代码B定义了一个Log表,希望清空除了最近10条记录以外... 查看详情

删除除具有特定文件名的最新文件之外的所有文件

】删除除具有特定文件名的最新文件之外的所有文件【英文标题】:Deleteallbutthenewestwithspecificfilename【发布时间】:2021-08-1119:24:46【问题描述】:我迁移了一个文件记录器以记录到数据库而不是磁盘。这会导致数据库中出现许多... 查看详情

如何从数据库 sql server 2012 中删除除前 10 条记录之外的所有记录? [复制]

】如何从数据库sqlserver2012中删除除前10条记录之外的所有记录?[复制]【英文标题】:howtoremoveallbuttop10recordsfromdatabasesqlserver2012?[duplicate]【发布时间】:2014-08-2512:47:01【问题描述】:当然我知道我可以为数据库中的每个表发出删... 查看详情

T-SQL:如何将逗号连接到除最终记录之外的所有文本字段

...时间】:2016-05-2113:25:49【问题描述】:我想知道如何编写查询,该查询可以将逗号附加到文本字段中,用于除最终记录之外的所有选定记录。我想创建一个通用函数,它可以包装一个查询来为C#和TypeScript创建枚举赋值语句。这是... 查看详情

MS-ACCESS:删除除 top 1 之外的所有行并从查询中更新表

】MS-ACCESS:删除除top1之外的所有行并从查询中更新表【英文标题】:MS-ACCESS:Deletingallrowsexceptfortop1andupdatingatablefromaquery【发布时间】:2009-05-2213:16:11【问题描述】:我几乎完成了这个,只是最后的几个小问题。我现在需要从表中... 查看详情

选择除第一条记录之外的所有记录

】选择除第一条记录之外的所有记录【英文标题】:Selectingallrecordsexcepttheveryfirst【发布时间】:2011-02-1512:40:06【问题描述】:我有一个包含客户的表和另一个包含该客户结果的表。一个客户可以有很多结果。我希望能够首先仅... 查看详情

Solr 如何删除数组中除记录外的所有记录?

】Solr如何删除数组中除记录外的所有记录?【英文标题】:SolrHowtodeleteallrecordsEXCEPTonesinanarray?【发布时间】:2011-03-3003:52:25【问题描述】:我有一个SolrPhpClient用于与Solr通信。我可以很容易地进行查询,例如:$solr->deleteByQuery(... 查看详情

DNS,保留除“A”记录之外的所有设置

】DNS,保留除“A”记录之外的所有设置【英文标题】:DNS,keepallsettingsbutthe\'A\'record【发布时间】:2016-05-1006:26:23【问题描述】:我的域管理员是Office365。我希望它保留所有当前记录,但由于我的网站在另一台服务器上,我已将... 查看详情

删除除包含给定字符串的第一行之外的所有内容

】删除除包含给定字符串的第一行之外的所有内容【英文标题】:Removeallbutthefirstlinecontainingagivenstring【发布时间】:2021-07-1110:49:32【问题描述】:我有一个名为duration.log的日志文件,其输出如下:2021-04-1520:25:45.639181:---DURATION:0:0... 查看详情

在 MS Access (2007-2013) 中删除除一个之外的所有表

】在MSAccess(2007-2013)中删除除一个之外的所有表【英文标题】:DropAllTablesExceptOneinMSAccess(2007-2013)【发布时间】:2019-03-2602:58:15【问题描述】:我正在尝试删除除Access中的一个表之外的所有表。这是在本地完成的,因此没有链接表... 查看详情

NSPredicate 返回除给定对象之外的所有对象

】NSPredicate返回除给定对象之外的所有对象【英文标题】:NSPredicatetoreturnallexceptgivenobject【发布时间】:2020-01-0622:35:10【问题描述】:找不到允许我获取所有对象的NSPredicate语法,除了一个给定的对象fetchRequest.predicate=NSPredicate(for... 查看详情

将 CloudKit 记录保存到本地文件保存除 CKAsset 之外的所有字段

】将CloudKit记录保存到本地文件保存除CKAsset之外的所有字段【英文标题】:SavingCloudKitRecordtoLocalFileSavesallfieldsExceptCKAsset【发布时间】:2019-01-2504:41:00【问题描述】:我正在尝试将CKRecords数组保存到为了快速启动和离线访问。从Cl... 查看详情

OleDbDataAdapter 零星丢失记录

...我对一个零星的问题感到困惑,我对特定表的所有记录的查询有时会返回所有记录,有时会返回除最后一条记录之外的所有记录。我正在使用以下代码stringresourceConSt 查看详情

如何从机器人框架测试报告中删除除特定关键字之外的所有关键字

】如何从机器人框架测试报告中删除除特定关键字之外的所有关键字【英文标题】:Howtoremoveallkeywordsexceptspecificfromrobotframeworktestreport【发布时间】:2019-09-1213:01:52【问题描述】:我想限制在output.xml/log.html中报告的关键字例如,... 查看详情

如何删除除 jq 之外的所有键?

】如何删除除jq之外的所有键?【英文标题】:HowdoIremoveallkeysexceptonewithjq?【发布时间】:2015-03-0610:49:53【问题描述】:给定一个对象列表,其中包含许多我不想要的键:["name":"Alice","group":"Admins","created":"2014","name":"Bob","group":"Users... 查看详情

需要 SQL 查询以获取除 sysadmin 程序之外的所有并发程序的列表

】需要SQL查询以获取除sysadmin程序之外的所有并发程序的列表【英文标题】:NeedSQLquerytogetlistofallconcurrentprogramotherthansysadminprogram【发布时间】:2020-12-2207:27:01【问题描述】:我正在尝试生成除OracleEBSR12.1中的sysadmin程序之外的所... 查看详情

如何重写历史记录,以便除我已经移动的文件之外的所有文件都在子目录中?

】如何重写历史记录,以便除我已经移动的文件之外的所有文件都在子目录中?【英文标题】:HowcanIrewritehistorysothatallfiles,excepttheonesIalreadymoved,areinasubdirectory?【发布时间】:2011-05-0120:46:09【问题描述】:我在git下有一个项目。... 查看详情