标签: sql-delete

从多个表中删除行

我正在尝试使用SQL从连接在一起的多个表中删除多个行.

表A与表B相连.表B与表C相连

我想删除表B和C中与表A中的行对应的所有行

CREATE TABLE `boards` (
  `boardid` int(2) NOT NULL AUTO_INCREMENT,
  `boardname` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY  (`boardid`)
);

-- --------------------------------------------------------

-- 
-- Table structure for table `messages`
-- 

CREATE TABLE `messages` (
  `messageid` int(6) NOT NULL AUTO_INCREMENT,
  `boardid` int(2) NOT NULL DEFAULT '0',
  `topicid` int(4) NOT NULL DEFAULT '0',
  `message` text NOT NULL,
  `author` varchar(255) NOT NULL DEFAULT '',
  `date` datetime DEFAULT NULL,
  PRIMARY KEY  (`messageid`)
);

-- --------------------------------------------------------

-- 
-- Table structure for table `topics` …
Run Code Online (Sandbox Code Playgroud)

mysql delete-row sql-delete

8
推荐指数
2
解决办法
3万
查看次数

删除sql server中的大量数据

假设我有一张10000000记录的表.这两种解决方案有什么区别?

  1. 删除数据如:

    DELETE FROM MyTable
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用应用程序逐行删除所有数据:

    DELETE FROM MyTable WHERE ID = @SelectedID
    
    Run Code Online (Sandbox Code Playgroud)

第一种解决方案是否具有最佳性能?对日志和性能有什么影响?

sql-server performance sql-delete

8
推荐指数
2
解决办法
3万
查看次数

"锁的总数超过了锁表大小"删除267条记录

我试图从大约4000万中删除267条记录.查询看起来像:

delete from pricedata
where
pricedate > '20120413'
Run Code Online (Sandbox Code Playgroud)

定价是一个char(8)领域.

我知道调整innodb_buffer_pool_size,但如果我能做到

select from pricedata
where
pricedate > '20120413'
Run Code Online (Sandbox Code Playgroud)

并获得267条记录(这就是全部),没有错误,为什么它会删除?

如果调整innodb_buffer_pool_size不起作用,我该怎么办?

mysql innodb locking sql-delete

8
推荐指数
3
解决办法
9998
查看次数

使用DELETE TRIGGER在DELETE之前将删除的值INSERT到表中

由于某种原因,我无法找到我需要的确切答案.我在这里搜索了最后20分钟.

我知道这很简单.非常简单.但出于某种原因我无法触发触发器..

我有一个有两列的表

dbo.HashTags

|__Id_|_name_|
|  1  | Love |
Run Code Online (Sandbox Code Playgroud)

我想将删除的值插入另一个dbo.HashTagsArchiveDELETE查询上调用的表中.

例:

DELETE FROM [dbo].[HashTags] WHERE Id=1
Run Code Online (Sandbox Code Playgroud)

这个例子后,我应该有删除的行dbo.HashTagsArchive和列有Id=1应被删除dbo.HashTags

我试过这个TRIGGER:

ALTER TRIGGER [dbo].[HashTags_BeforeDelete]
    ON [dbo].[HashTags]
    FOR DELETE
AS
  BEGIN
    INSERT INTO HashTagsArchive
   ( Id,
     HashTagId,
     delete_date)
   SELECT d.Id, m.HashTagId,GETUTCDATE() FROM deleted d 
   JOIN dbo.HashTags m ON m.Id=d.Id
    DELETE FROM dbo.HashTags
    WHERE ID IN(SELECT deleted.Id FROM deleted)
  END
GO
Run Code Online (Sandbox Code Playgroud)

它已经到了,Deleted但没有InsertedHashTagsArchive

sql t-sql sql-server triggers sql-delete

8
推荐指数
1
解决办法
2万
查看次数

从没有主键的临时表中删除重复的字段

我需要从临时表中删除重复字段,其中有问题的字段不完全相同.

例如,我有以下数据:

First  Last     DOB
John   Johnson  10.01.02
Steve  Stephens 23.03.02
John   Johnson  2.02.99
Dave   Davies   3.03.03
Run Code Online (Sandbox Code Playgroud)

这里有约翰约翰逊的两个.我只想要一个约翰逊 - 我不在乎哪一个.所以结果表看起来像:

First  Last     DOB
John   Johnson  10.01.02
Steve  Stephens 23.03.02
Dave   Davies   3.03.03
Run Code Online (Sandbox Code Playgroud)

我正在使用TSQL,但我更喜欢使用非专有的SQL.

谢谢

sql t-sql sql-server sql-delete

8
推荐指数
2
解决办法
5716
查看次数

Java sql删除行

您好我试图从我的数据库中删除一行.我没有错,但它什么也没做,任何帮助或建议都会很棒!

 public static void DeleteRow(String name)
  {
     try 
     {  
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection(url, username, password);

        PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = " + name + ";");
        st.executeUpdate(); 
     }
     catch(Exception e)
     {
         System.out.println(e);
     }
}
Run Code Online (Sandbox Code Playgroud)

java sql database sql-delete

8
推荐指数
1
解决办法
5万
查看次数

Postgres Materialize导致删除查询性能不佳

我有一个DELETE查询,我需要在PostgreSQL 9.0.4上运行.我发现它是高性能的,直到它在subselect查询中遇到524,289行.

例如,在524,288,没有使用物化视图,成本看起来很不错:

explain DELETE FROM table1 WHERE pointLevel = 0 AND userID NOT IN
(SELECT userID FROM table2 fetch first 524288 rows only);
                                                QUERY PLAN
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Delete  (cost=13549.49..17840.67 rows=21 width=6)
   ->  Index Scan using jslps_userid_nopt on table1  (cost=13549.49..17840.67 rows=21 width=6)
         Filter: ((NOT (hashed SubPlan 1)) AND (pointlevel = 0))
         SubPlan 1
           ->  Limit  (cost=0.00..12238.77 rows=524288 width=8)
                 ->  Seq Scan on table2  (cost=0.00..17677.92 rows=757292 width=8)
(6 rows)

但是,一旦我达到524,289,物化视图就会发挥作用,DELETE查询变得更加昂贵:

explain DELETE FROM table1 WHERE pointLevel = 0 AND userID NOT IN …

database postgresql materialized-views query-performance sql-delete

8
推荐指数
1
解决办法
651
查看次数

从2个表中删除MySql级联

我有一个使用类表继承的MySql架构,但我希望子表从父表和外表中进行级联删除.

create table parent (
  _key bigint unsigned not null,
  name varchar(64) unique not null,
  primary key(_key)
);

create table child_a (
  _key bigint unsigned not null,
  foreign_key_a bigint unsigned not null,
  foreign key(_key) references parent(_key) on delete cascade,
  foreign key(foreign_key_a) references a(_key) on delete cascade,
  primary key(_key)
);

create table child_b (
  _key bigint unsigned not null,
  foreign_key_b bigint unsigned not null,
  foreign key(_key) references parent(_key) on delete cascade,
  foreign key(foreign_key_b) references b(_key) on delete cascade,
  primary …
Run Code Online (Sandbox Code Playgroud)

mysql schema cascade sql-delete

8
推荐指数
1
解决办法
929
查看次数

在单个查询中从DB2中的表中删除重复的行

我有一个包含3列的表格如下:

one   |   two    |  three  |   name
------------------------------------
 A1       B1          C1        xyz
 A1       B1          C1        pqr      -> should be deleted
 A1       B1          C1        lmn      -> should be deleted
 A2       B2          C2        abc
 A2       B2          C2        def      -> should be deleted
 A3       B3          C3        ghi
------------------------------------ 
Run Code Online (Sandbox Code Playgroud)

该表没有任何主键列.我对表没有任何控制权,因此我无法添加任何主键列.

如图所示,我想删除一列,两列和三列组合相同的行.因此,如果A1B1C1发生三次(如上所述),则应删除其他两个,只留下一个.

如何通过DB2中的一个查询实现这一目标?

我的要求是单个查询,因为我将通过java程序运行它.

sql db2 sql-delete

7
推荐指数
1
解决办法
6万
查看次数

如何在SQL中按行号删除

我需要从行号475删除到948,因为它们是1-474行的重复。我想这可能与之接近,或者还有更多呢?

DELETE FROM dbo.industry WHERE row_number between 475 and 948
Run Code Online (Sandbox Code Playgroud)

ssms sql-delete

7
推荐指数
2
解决办法
2万
查看次数