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

如何删除这些条件?

毋弘光
2023-03-14

如何从没有主键的表中删除满足几个条件的行?(实际上主键由每一列组成)

经过多次尝试后,我有了一段代码,它首先创建一个临时表,在其中插入我想删除的行,最后我尝试从原始表中删除那些与临时表相比符合条件的行。

但是它给了我一个关于不能链接几个部分标识符#temp.idCarga的错误

也许这很容易,但是我已经尝试了这么多时间,我无法正常集中注意力。

CREATE TABLE #TEMP 
(
    CC int,
    idCarga int, 
    Tipo nvarchar(50),
    Importe float,
    Bloque nvarchar(50),
    idsistema int
)

INSERT INTO #TEMP(CC,idCarga,Importe,Bloque,Tipo,IdSistema)
select distinct CI.CC,CI.idCarga,CI.Importe,CI.Bloque,CI.Tipo,CI.idSistema
from CONT_INGRESOS_InformeMayor CI
INNER JOIN 
(
    SELECT idCarga,CC,Bloque,Importe,TIpo
    FROM CONT_INGRESOS_InformeMayor
) CI2 
    ON CI.CC = CI2.CC 
    AND CI.Bloque = CI2.Bloque 
    AND CI.TIpo <> CI2.Tipo
WHERE CI.idCarga = @idCarga 
    AND CI2.idCarga = @idCarga 
    AND CI.Importe = 0

DELETE 
FROM CONT_INGRESOS_InformeMayor 
WHERE idCarga = #temp.idCarga 
    AND tipo = #temp.tipo 
    AND importe = #temp.importe 
    and bloque = #temp.bloque

共有3个答案

于正志
2023-03-14

另一方面,您可以尝试在不涉及临时表的情况下删除行:

DELETE FROM CI
from CONT_INGRESOS_InformeMayor CI
INNER JOIN 
(
    SELECT idCarga,CC,Bloque,Importe,TIpo
    FROM CONT_INGRESOS_InformeMayor
) CI2 
    ON CI.CC = CI2.CC 
    AND CI.Bloque = CI2.Bloque 
    AND CI.TIpo <> CI2.Tipo
WHERE CI.idCarga = @idCarga 
    AND CI2.idCarga = @idCarga 
    AND CI.Importe = 0
吕冠宇
2023-03-14

您的< code>DELETE缺少到< code>#temp表的< code>JOIN

DELETE t1
FROM CONT_INGRESOS_InformeMayor t1
INNER JOIN #temp t
    ON t1.idCarga = t.idCarga 
        AND t1.tipo = t.tipo 
        AND t1.importe = t.importe 
        and t1.bloque = t.bloque
皇甫逸清
2023-03-14

您错过了< code>DELETE上的一个联接。试试这个:

DELETE _d
FROM CONT_INGRESOS_InformeMayor AS _d
INNER JOIN #temp AS _t
    ON _d.idCarga = _t.idCarga 
    AND _d.tipo = _t.tipo 
    AND _d.importe = _t.importe 
    AND _d.bloque = _t.bloque
 类似资料:
  • 如何删除这个/dev/sdc5 ?

  • 问题内容: 我必须向现有表添加唯一约束。很好,除了表已经有数百万行,而且许多行违反了我需要添加的唯一约束。 删除有问题的行的最快方法是什么?我有一条SQL语句,该语句查找重复项并将其删除,但要花很长时间才能运行。有没有其他方法可以解决此问题?也许备份表,然后在添加约束后还原表? 问题答案: 其中一些方法似乎有些复杂,我通常这样做是: 给定table table,要在()上对其进行唯一化,使行保持为

  • 已经在proguard-rules.pro上尝试了 -keepattributes cunclosingmethod和-dontwarn innerclasses ,但没有成功:( 你们有什么提示吗? 分级文件(主要部分): java-version&&javac-version java version“1.7.0_71” java(TM)SE运行时环境(构建1.7.0_71-B14) java

  • 我希望当用户编写命令时,bot会删除具有特定名称的特定频道,但我并没有真正成功。错误: 代码:

  • 我想从(RubyonRails)响应中删除一些头文件 报头响应: HTTP/1.1 200正常 日期:2013年6月6日星期四14:42:26 GMT 连接:保持活动状态 X运行时间:0.01900 内容类型:文本/纯文本;字符集=utf-8 缓存控制:专用,最大年龄=0,必须重新验证 服务器:WEBrick/1.3.1(Ruby/1.8.7/2012-10-12) 内容长度:281 Etag:“

  • 问题内容: 我们使用ELK堆栈进行日志记录。我被要求设计一个流程,以解决如何删除意外记录的敏感信息。 现在,根据我对ElasticSearch(Lucene)如何处理删除和更新的了解,仍然无法使用索引中的数据。随着索引的合并,最终将被清理,等等。 是否有运行更新(删除内容)或删除(删除内容)并保证将其删除的过程? 问题答案: 当更新或删除某些值时,ES会将当前文档标记为已删除并为新文档建立索引。删