标签: sql-delete

从表中删除重复记录 - SQL查询

我只需要从表中删除重复行,就像我在表中有3个重复行一样,我的查询将从3个重复行中删除2行.

我怎么能得到这个?请帮我.

sql database sql-server sql-delete

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

如何从数据库中删除?

我知道有两种方法可以从数据库表中删除数据

  • 永远删除它
  • 使用像isActive/isDeleted这样的标志

现在isActive的问题是我必须在我的SQL查询中跟踪记录是否处于活动状态.但是,使用DELETE可以永久删除数据.

备份这些数据的最佳方法是什么?

假设我在数据库中有多个表,我应该有一个只支持所有内容并将其存储在另一个表中的公共函数(可能是XML格式吗?)还是有其他方法.

我正在使用MySQL,但我对其他数据库中使用的技术感到好奇.

mysql database-design sql-delete

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

使用单个查询删除多行

这应该是一个简单的问题,但我还没有找到一个明确的答案.有没有人知道如何使用单个查询从SQL Server 2005中的单个表中删除多行?我想知道它是否恰好与插入多行相反,使用该UNION ALL方法.这会有用吗?:

DELETE FROM Table (Name, Location)
SELECT 'Name1', 'Location1'
UNION ALL
SELECT 'Name2', 'Location2'
UNION ALL
SELECT 'Name3', 'Location3'
etc...
Run Code Online (Sandbox Code Playgroud)

编辑:我应该指出,这是一个链接表,我正试图从中删除记录.没有主键,任何列的值都可能重复.因此,在删除记录之前,我需要确保两列都包含同一记录的特定值.

sql sql-server-2005 sql-delete

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

SQL Server DELETE的索引速度较慢

我有一个SQL Server 2005数据库,我尝试在适当的字段上放置索引,以便DELETE从具有数百万行(big_table只有3列)的表中加速记录,但现在DELETE执行时间更长!(例如1小时对比13分钟)

我和表之间有关系,我过滤的列DELETE在另一个表中.例如

DELETE FROM big_table
WHERE big_table.id_product IN (
SELECT small_table.id_product FROM small_table
WHERE small_table.id_category = 1)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我也尝试过:

DELETE FROM big_table
WHERE EXISTS
(SELECT 1 FROM small_table
WHERE small_table.id_product = big_table.id_product
AND small_table.id_category = 1)
Run Code Online (Sandbox Code Playgroud)

虽然它似乎比第一个运行得稍微快一点,但索引的速度仍然比没有速度慢得多.

我在这些字段上创建了索引:

  1. big_table.id_product
  2. small_table.id_product
  3. small_table.id_category

我的.ldf文件在这期间增长了很多DELETE.

DELETE当我的表上有索引时,为什么我的查询会变慢? 我以为他们应该跑得更快.

UPDATE

好的,共识似乎是索引将放慢一个巨大的DELETE因为索引必须更新.虽然,我仍然不明白为什么它不能同时DELETE全部所有行,并且最后只更新一次索引.

我从一些阅读中得到的印象是,DELETE通过WHERE更快地搜索子句中的字段,索引会加快.

Odetocode.com说:

"在DELETE和UPDATE命令中搜索记录时,索引的工作方式与SELECT语句一样."

但是在文章的后面,它说太多的索引会影响性能.

鲍勃问题的答案:

  1. 表中有5500万行
  2. 删除了4200万行
  3. 类似SELECT语句不会运行(抛出类型'System.OutOfMemoryException'的异常)

我尝试了以下2个查询: …

sql sql-server subquery sql-delete

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

使用SQLite删除所有数据删除语法?

我已经创建了一个按钮来删除我的数组中的所有对象,这些对象显示在我的tableView中.然后它重新加载数据,tableview为空.但是如何从SQLite数据库中删除所有数据,而不仅仅是数组呢?现在重新启动时会出现数据.我试过这个:

按钮无效:

   - (void) deleteAllButton_Clicked:(id)sender {

     [appDelegate removeAllBooks:nil];
     [self.tableView reloadData];


    }
Run Code Online (Sandbox Code Playgroud)

Appdelegate无效:

-(void) removeAllBooks:(Book *)bookObj {
 //Delete it from the database.
 [bookObj deleteAllBooks];

 //Remove it from the array.
 [bookArray removeAllObjects];
}
Run Code Online (Sandbox Code Playgroud)

删除Book.m中的语法

- (void) deleteAllBooks {
 if(deleteStmt == nil) {
  const char *sql = "WHAT DO I HAVE TO DO TO DELETE ALL THE ROWS?";
  if(sqlite3_prepare_v2(database, sql, -1, &deleteStmt, NULL) != SQLITE_OK)
   NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(database));
 }

 //When binding parameters, index starts from 1 and not …
Run Code Online (Sandbox Code Playgroud)

sqlite sql-delete

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

SQL删除命令?

我在SQL中遇到一个带有意外结果的简单DELETE语句时出现问题,它似乎将该单词添加到列表中.一定是傻事!但我看不到它,尝试了几种不同的方式.所有相同的结果都很混乱.

public void IncludeWord(string word)
{
    // Add selected word to exclude list
    SqlConnection conn = new SqlConnection();
    String ConnectionString = "Data Source = dev\\SQLEXPRESS ;" + "Initial Catalog=sml;" + "User id=** ;" + "Password =*;" + "Trusted_Connection=No";

    using (SqlConnection sc = new SqlConnection(ConnectionString))
    {
        try
        {
            sc.Open();

            SqlCommand Command = new SqlCommand(
               "DELETE FROM excludes WHERE word='@word'" +
                 conn);


           Command.Parameters.AddWithValue("@word", word);  
            Command.ExecuteNonQuery();
        }
        catch (Exception e)
        {
            Box.Text = "SQL error" + e;
        }
        finally
        {
           sc.Close();
        }
        ExcludeTxtbox.Text …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-delete

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

如何在Firebird中优化DELETE .. NOT IN .. SUBQUERY

我有这种删除查询:

DELETE 
FROM SLAVE_TABLE
WHERE ITEM_ID NOT IN (SELECT ITEM_ID FROM MASTER_TABLE)
Run Code Online (Sandbox Code Playgroud)

有没有办法优化这个?

firebird subquery sql-delete

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

删除重复的行,需要在mysql中保留所有行

我想删除基于两列的重复行,但需要保留所有行的1行.

重复行可以超过两行,如,

ID  NAME PHONE
--  ---- ----
1   NIL  1234 
2   NIL  1234 
3   NIL  1234 
4   MES  5989
Run Code Online (Sandbox Code Playgroud)

我想从3以上删除2行中的任意一行并保留1行.

mysql sql sql-delete

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

删除除100个最新行以外的所有行

我正在使用MS SQL数据库,并且有一个名为“ Logs”的表,如下所示:

在此处输入图片说明

记录在这里一个接一个地添加,因此表在几天/几周后变得很大。

我需要定期进行的是一些清理工作。即我需要一个SQL查询,该查询将删除较旧的行并仅在此表中保留最近的100条记录。

我同意最好让它“删除早于some_date的记录” ...以前是这样的,但是客户希望它与众不同:(所以...在这里。

顺便说一句:我对人们对此问题持否定态度感到失望。有什么问题吗?... 想像一下:这个问题已经产生了4个答案!!!……一个人决定对此否定!现在我真的不知道该怎么想...周围的人很奇怪:(

sql t-sql sql-server datetime sql-delete

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

SQL Server - 使用SQL删除日期范围之间的行.日期转换失败

DELETE FROM BIZ 
WHERE [Orgnl_Cmpltn_Date]
      BETWEEN '2014-02-31'  AND '2014-04-01'
Run Code Online (Sandbox Code Playgroud)

这是DELETE我写的声明.有一个错误说:

从字符串转换日期和/或时间时转换失败.

我知道我必须写出正确的日期格式,但我不确定这是怎么回事.

这个问题在其他地方没有得到解答,因为我看到的答案没有指定日期格式(在我要求的上下文中)

sql sql-server datetime sql-server-2008 sql-delete

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