【问题标题】:TSQL, Remove batch of rows with same instanceID, except rows with certain criteriaTSQL,删除具有相同instanceID的一批行,但具有特定条件的行除外
【发布时间】:2020-04-12 04:47:58
【问题描述】:

我有一个大型网络日志表,其中包含 log_instanceID、Log_id(唯一)、Log_date、sevity 和其他列(不重要)。 我想删除相同 Log_instanceID 的所有行,希望实例至少有一行的 Log_Info 值不同于“INFO”,即“警告”或“错误”。

SELECT COUNT(log_id) NoOfLogs, instance_id, severity, CAST(log_date  AS DATE) log_date
FROM log
WHERE instance_id = '3B2D8B77-1D4E-40F8-A274-5A1372E9178C'
group by instance_id, severity, cast(log_date  AS DATE)

结果 - 保留

 NoOfLogs    |              instance_id                    |  severity    |   log_date
----------                --------------                   ----------       ----------
    93       |      3B2D8B77-1D4E-40F8-A274-5A1372E9178C   | **ERROR**    |  2019-11-03
    747      |      3B2D8B77-1D4E-40F8-A274-5A1372E9178C   |   INFO       |  2019-11-03

SELECT COUNT(log_id) NoOfLogs, instance_id, severity, CAST(log_date AS DATE) log_date
FROM log
WHERE instance_id = 'C24CE96F-65F1-44CF-8D91-5939091AF8AB'
GROUP BY instance_id, severity, CAST(log_date  AS DATE)

结果 - 删除

 NoOfLogs    |              instance_id                    |  severity    |   log_date
----------                --------------                     ----------      ----------
    3        |      C24CE96F-65F1-44CF-8D91-5939091AF8AB   |   INFO       |  2019-05-13

我只需要删除严重性为“INFO”的所有实例。

如何仅提取带有仅信息日志的实例?

【问题讨论】:

    标签: sql sql-server tsql except


    【解决方案1】:

    一个直接的解决方案是NOT EXISTS 和一个相关的子查询,检查是否存在另一个严重性的记录,然后是相同实例 ID 的“INFO”。

    DELETE FROM log
                WHERE NOT EXISTS (SELECT *
                                         FROM log x
                                         WHERE x.instance_id = log.instance_id
                                               AND x.severity <> 'INFO');
    

    【讨论】:

    • 谢谢,这是有道理的,虽然我不相信“不存在” 100%,在某些情况下它可能会忽略子查询结果。在删除之前,我将首先使用选择运行您的脚本,以验证列表中没有叛徒实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-29
    相关资源
    最近更新 更多