当前位置: 首页 > 面试题库 >

SQL:选择所有未被另一个查询选择的记录

毋弘光
2023-03-14
问题内容

我正在寻找一个SQL查询来选择所有未由同一表上的另一个查询选择的记录。具体来说,我想选择所有具有特定字段(’fieldA’)重复项的记录,然后删除除其中一个记录以外的所有记录。

因此,一条select语句可能类似于以下内容(不起作用!):

从没有ID的表中选择*(从按fieldA的表组中选择*)

如果不可能进行单个查询,那么最有效的解决方案是什么?


问题答案:

具体来说,我想选择所有具有特定字段(’fieldA’)重复项的记录,然后删除除其中一个记录以外的所有记录。

在这种情况下,请加入:

delete x 
from myTable x
 join myTable z on x.field = z.field
where x.id > z.id


 类似资料:
  • 问题内容: 我想知道是否有一种方法可以完成: 通过使用和像这样: 我可以 使用 LIMIT和OFFSET 编写SQL语句,但仍然得到ALL结果吗? 当然我可以使用一条语句,但我尽可能避免使用它 问题答案: 从MySQL文档: 要检索从某个偏移量到结果集结尾的所有行,可以为第二个参数使用较大的数字。该语句检索从第96行到最后一行的所有行: 选择* FROM tbl LIMIT 95,18446744

  • 问题内容: 我有一个表,其中包含许多ID和与每个ID相关联的许多日期,甚至还有一些没有日期的ID。对于每个ID和日期组合,我想选择ID,日期和也与该ID关联的下一个最大日期;如果不存在,则选择null作为下一个日期。 样品表: 所需的输出: 问题答案: SELECT mytable.id, mytable.date, ( SELECT MIN(mytablemin.date) FROM mytab

  • 问题内容: 如果返回0行,那么我需要。是否可以在带有条件语句的单个MySQL查询中执行此操作? 编辑: 所有答案均有效,但前提是两个查询均从同一表(或具有相同列数的表)中选择。如果第二个查询应用于具有联接的其他表上怎么办? 让我写下我的查询以使问题更清楚: 第一: 如果第一个结果为空,则: 第二名: 如果返回第一个查询,我将使用第一个查询的行,否则将使用第二个查询。 问题答案: 从我刚刚进行的快速

  • 问题内容: 主题表 SubjectToClass表 我需要列出的所有行,其中的表是不是在指定类的表。 我有这个但不能再走了 问题答案:

  • 问题内容: 我有一张桌子,桌子之间有一对多的关系。每个记录可以有来自同一张表的n个孩子。例如 给定一个ID,我想递归选择所有文件夹记录的SUM(SIZE)。目标数据库是MySql 5,但是如果它的通用性足以在Oracle和MS- SQL中运行,那将是很好的选择。 我不知道树有多深,可能是1级,可能是50级(或更多) 问题答案: 这可能会有些帮助:http : //mikehillyer.com/a

  • 问题内容: 在MSSQL服务器上,给出以下表: 我可以发出类似的查询: 并得到类似: 如果我想要这样的数据,查询数据库的最有效方法是什么? 数据库结构要复杂得多,不幸的是我无法更改它。 编辑 :解决方案不应在查询中使用和作为硬编码值。 问题答案: 对于SQL Server 2005+,可以使用动态SQL和。