【问题标题】:SQL - Delete duplicate columns error [duplicate]SQL - 删除重复列错误[重复]
【发布时间】:2019-01-19 20:11:05
【问题描述】:

我的下表 (TBL_VIDEO) 在“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);

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:
    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
    

    【讨论】:

      【解决方案2】:

      你有两个问题:

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

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

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

      delete y
      from Table12 y 
      where exists (
      

      【讨论】:

        【解决方案3】:

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

        从 T 中删除 ( SELECT ROW_NUMBER()over(partition by column1 order by column2)a,* FROM TABLENAME )T 其中a>1

        【讨论】:

          【解决方案4】:

          删除 来自 TBL_VIDEO y 其中 y.CAMERA

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-05-25
            • 2016-01-07
            • 1970-01-01
            • 2023-04-10
            • 2022-01-14
            • 2017-08-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多