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

按值删除重复的行

龙智
2023-03-14
问题内容

我需要执行分组依据,但只能在满足条件的行上执行,否则返回不满足条件的所有行。例如,在下表中,我只希望对“活动”字段中具有“
1”的行进行分组,并返回所有没有的行。

表格(ID,标签,有效):

1, A, 1
2, A, 1
3, B, 0
4, B, 0

将返回:

1, A, 1
3, B, 0
4, B, 0

问题答案:

这是我能想到的最简单的方法。这是group by中的一个案例。如果满足条件,则按标签分组,否则按主键分组。

SELECT id, label, active
FROM table
GROUP BY
  CASE
    WHEN active = 1 THEN active
    ELSE id END

如果要按活动分组并标记:

SELECT id, label, active
FROM table
GROUP BY
  CASE
    WHEN active = 1 THEN active
    ELSE id END,
  label

编辑:我误解了您要分组的字段。现在已更正。



 类似资料:
  • 问题内容: 我必须清理具有重复行的表: 一个可能具有多个值: 我想对整个表执行一个查询,并删除和重复的所有行。在上面的示例中,删除后,我只想剩下1、2、4和5。 问题答案: ;WITH x AS ( SELECT id, gid, url, rn = ROW_NUMBER() OVER (PARTITION BY gid, url ORDER BY id) FROM dbo.table ) SEL

  • 问题内容: 我有一个字符串数组列表,并在其中添加了一些重复值。我只想删除那个重复的值,那么如何删除它。 在这个例子中我有一个主意。 但是有没有足够的方法来删除该重复表格列表。没有使用For循环?我可以通过使用HashSet或其他方式来做到这一点,但只能使用数组列表。想对此提出您的建议。谢谢您的提前答复。 问题答案: 您可以从列表中创建一个。在将包含每个元素只有一次,在相同的顺序。然后从创建一个新的

  • 我有两张桌子——桌子1和桌子2。 它们有相同的列——Col1、Col2、Col3、Col4(整数)。 我将Table_2行插入Table_1。 表_1和表_2有一些基于Col1和Col2的重复值。我需要保留表_2的值,并删除表_1的重复值。 例如: 我尝试了以下方法-

  • 问题内容: 我有一张看起来像这样的桌子 表格1 ID,名称 如何编写查询以删除所有具有重复名称的行,但保留具有较低ID的行? 问题答案: 如果您使用的是SQL Server 2005或更高版本: 如果使用SQL Server 2000及更低版本

  • 问题内容: 我有三列的表:,和 有重复的字段。我想删除所有具有相同的行为别人 ,除了 对最近更新的一个。 因此,如果表包含这些行: 然后,我只想保留这些行: 您如何在SQL中做到这一点?我想象会从具有重复值的行中删除单个random(?)行,但是如何使其除最近更新的行之外的 所有 行删除呢? 问题答案: 您可以使用左联接来执行此操作: 这意味着对于每一行,它会寻找更新日期最近的另一行,如果有更新日

  • 问题内容: 我有下表,现在我需要删除具有重复的“ refID”但至少有一行与该引用对应的行,即我需要删除第4行和第5行。请对此提供帮助 问题答案: 这类似于Gordon Linoff的查询,但没有子查询: 这将使用内部联接仅删除其中另一行具有相同的refID但具有较低ID的行。 避免子查询的好处是能够利用索引进行搜索。该查询在refID + ID上使用多列索引时应表现良好。