当前位置: 首页 > 知识库问答 >
问题:

SQL-删除重复列错误[重复]

徐奇逸
2023-03-14

我有下表(TBL_视频),在“TIMESTAMP”中有重复的列条目,我只想在“CAMERA”编号匹配时删除它们。

之前:

ANALYSIS_ID | TIMESTAMP | EMOTION | CAMERA
-------------------------------------------    
 1          | 5         | HAPPY   | 1
 2          | 10        | SAD     | 1
 3          | 10        | SAD     | 1
 4          | 5         | HAPPY   | 2
 5          | 15        | ANGRY   | 2
 6          | 15        | HAPPY   | 2

之后:

ANALYSIS_ID | TIMESTAMP | EMOTION | CAMERA
-------------------------------------------    
 1          | 5         | HAPPY   | 1
 2          | 10        | SAD     | 1
 4          | 5         | HAPPY   | 2
 5          | 15        | ANGRY   | 2

我已尝试此语句,但列不会相应删除。我非常感谢为生成正确的SQL语句所提供的所有帮助。提前谢谢!

delete y
from TBL_VIDEO y 
where exists (select 1 from TBL_VIDEO y2 where y.TIMESTAMP = y2.TIMESTAMP and y2.CAMERA < y.CAMERA);

共有3个答案

贺元明
2023-03-14

通用SQL命令如下所示。您可以输入列名/条件和表名。

从(SELECTROW_NUMBER()over(分区按列1顺序按列2)a中删除T,*from TABLENAME)T

松景铄
2023-03-14

你有两个问题:

  1. 我的代码有什么问题
  2. 是否有更好的方法删除重复列条目

对于第二个问题,这是一个重复。

第一个问题,请参阅https://docs.microsoft.com/en-us/sql/t-sql/statements/delete-transact-sql?view=sql-服务器-2017。(删除时按F1)。正确的语法是

delete y
from Table12 y 
where exists (
法兴德
2023-03-14
CREATE TABLE Table12
    ([ANALYSIS_ID] int, [TIMESTAMP] int, [EMOTION] varchar(5))
;

INSERT INTO Table12
    ([ANALYSIS_ID], [TIMESTAMP], [EMOTION])
VALUES
    (1, 5, 'HAPPY'),
    (2, 10, 'SAD'),
    (3, 10, 'SAD'),
    (4, 15, 'HAPPY'),
    (5, 15, 'ANGRY')
;

with cte as (select *, row_number() over (partition by emotion order by [ANALYSIS_ID] ) as rn   from Table12) 
delete from cte
where rn>1
select * from Table12

输出

ANALYSIS_ID TIMESTAMP   EMOTION
1              5         HAPPY
2              10         SAD
5              15        ANGRY
 类似资料:
  • 问题内容: 如何从以以下方式设置的表中删除重复项? 一个工作人员可以有多个与他们相关联的type_ID,我想删除所有重复的类型。如果有重复项,我想删除具有最新条目的类型。 问题答案: 窗口函数row_number()的教科书候选: 这也照顾了一组相同的受骗者的情况。 请参阅有关data.SE的简化演示。 更新较简单的版本 事实证明,这可以简化:在SQL Server中,您可以直接从CTE中删除:

  • 对于包含10列的数据框,如何删除索引2以上的列。数据框如下所示: 任务是删除列3-列10

  • 当我要执行以下查询时: 我得到了错误: 消息102,级别15,状态1,第1行“,”附近的语法不正确。 编辑: 我要删除klantId 3。

  • 问题内容: 尝试从Sybase到Microsoft SQL进行OPENQUERY时,我遇到错误: 通过OPENQUERY和OPENROWSET获得的结果集中不允许重复的列名。列名称“ PatientID”是重复的。 我建立的查询基于相似的entryID和PatientID联接了2个表。 例如: 当然,真正的查询不仅包含更多信息。 是否有重命名或删除AdmID和PatID列之一的好方法? 我尝试过:

  • 我有下表(TBL_视频),在“TIMESTAMP”中有重复的列条目,我只想在“CAMERA”编号匹配时删除它们。 之前: 之后: 我已尝试此语句,但列不会相应删除。我非常感谢为生成正确的SQL语句所提供的所有帮助。提前谢谢!

  • 我正在读取一个包含重复列的文本文件,通过: 列名为: 所有的时间和时间相对列都包含相同的数据。我想要: 抱歉,我做了个熊猫呆子。如有任何建议,将不胜感激。 其他详细信息 Pandas版本:0.9.0 Python版本:2.7.3 Windows 7 (通过Pythonxy 2.7.3.0安装)