标签: sql-delete

MySQL在'到期'后删除行

我试图在MySQL数据库中删除过期的条目,在创建或更新名为lastBeat的字段时使用CURRENT_TIME进行更新,并使用以下查询来检查/删除超过20秒的行:

DELETE * FROM `rmachines` WHERE
 `lastBeat` < (NOW() - 20);
Run Code Online (Sandbox Code Playgroud)

我也尝试过CURRENT_TIME而不是NOW()

有2个主循环:

  1. 每秒更新rmachines中的一行

  2. 执行删除查询

如果2快速执行,当时间滚动到下一分钟(即59-60秒)时,它会删除该行,就像它已经过期一样(即使它确实没有!),否则它表现良好.

如果2每秒执行一次这不是那么明显,那么"错误到期"很少发生,但我每秒运行5次以暴露"问题".

我找到了一个解决方案,经过测试并且似乎在相同的情况下工作:

在mysql数据库中删除超过3个月的行的工作

但谁能告诉我为什么我的方法不起作用?

mysql datetime timestamp delete-row sql-delete

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

删除所有行后,COUNT(*)需要很长时间

我有下表:

CREATE TABLE Sdata(uid INTEGER, timestamp DATETIME, value REAL, FOREIGN KEY (uid) REFERENCES Series_uid(uid));
Run Code Online (Sandbox Code Playgroud)

有一次,这个表有~90M行.我查询SELECT COUNT(*) FROM Sdata;了大约7分钟.

然后我继续前进DELETE FROM Sdata;.这个查询花了一个多小时,考虑到大尺寸,这是可以理解的.删除所有行后Sdata,我COUNT再次运行.这次还需要大约7分钟.

我很困惑,为什么COUNT仍然需要一段时间,即使表现在是空的.这里发生了什么?

mysql count delete-row sql-delete

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

数据库中用于删除行的主键或常规字段?

我想删除数据库中的一行,我有 2 个选项;一是用普通列删除行,二是主键?

我知道主键更好,但为什么呢?

sql primary-key sql-delete

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

从没有pk或id的表中删除重复记录或在mysql中删除唯一列

我需要从我的一个表中删除所有重复的记录,问题是没有任何id或唯一或键列,所以我不能做这样的事情:

delete from tbl using tbl,tbl t2 where tbl.locationID=t2.locationID
  and tbl.linkID=t2.linkID  and tbl.ID>t2.ID
Run Code Online (Sandbox Code Playgroud)

因为它需要一个id列或唯一或键列,我不能做一个

ALTER IGNORE TABLE 'mytable' ADD UNIQUE INDEX 
Run Code Online (Sandbox Code Playgroud)

因为有些信息总是有必要重复,但有些信息没有,我无法做到:

DELETE FROM 'table' WHERE 'field' IN (SELECT 'field' FROM 'table' GROUP BY 'field'HAVING (COUNT('field')>1))
Run Code Online (Sandbox Code Playgroud)

因为它会删除所有重复的,永远不会留下一个这是我的表的一个例子


+----------+----------------------+-------------+-------------+
| phone    | address              | name        | cellphone   |
+----------+----------------------+-------------+-------------+
| 2555555  | 1020 PANORAMA        | JUAN CARLOS | 0999999999  | diferent address
| 2555555  | GABRIEL JOSE 1020    | JUAN CARLOS | 0999999999  | good one
| 2555555  | …
Run Code Online (Sandbox Code Playgroud)

mysql records sql-delete

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

SQLite:删除另一个表中指定的表中的所有记录

有这样的桌子

mytab       deltab
---------   --------
id | name   id | name
 1 | Ann     2 | Bob
 2 | Bob     3 | Cindy
 3 | Cindy
 4 | Dave
Run Code Online (Sandbox Code Playgroud)

我想执行查询,删除mytab中指定的所有记录deltab,因此 mytab 中只会留下 Ann 和 Dave 。

虽然MySQL有多表删除语法,但SQLite删除语法似乎没有这样的东西。

我正在考虑使用 select-stmt 替换语法,并标记将在 DELETE 查询中删除的行(例如将这些名称设置为 NULL)。请问有没有更有效的方法?

sqlite sql-delete

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

MySQL触发器在插入后删除旧行

这个MySQL触发器有什么问题?插入后,我试图删除大于1个月的行。此触发器仅删除最后插入的行。

CREATE TRIGGER `users_logins_delete_olds` 
AFTER INSERT ON `users_logins` FOR EACH ROW 
BEGIN
    DELETE FROM users_logins WHERE user_id = new.user_id AND timestamp < (NOW() - INTERVAL 1 MONTH);
END
Run Code Online (Sandbox Code Playgroud)

mysql triggers timestamp sql-delete

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

如何删除django中的数据库表?

我更改了模型并进行了迁移。然后我又更改了一次模型,当尝试 python manage.py migrate 时,我收到错误:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, shop
Running migrations:
  Applying shop.0004_auto_20180128_1331...Traceback (most recent call last):
  File "/home/morilon/dj/intshop/venv/lib/python3.6/site-packages/django/db/backends/utils.py", line 83, in _execute
    return self.cursor.execute(sql)
  File "/home/morilon/dj/intshop/venv/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 301, in execute
    return Database.Cursor.execute(self, query)
sqlite3.OperationalError: table "shop_brand" already exists
Run Code Online (Sandbox Code Playgroud)

所以我的问题是 - 如何删除表“shop_brand”???我已经尝试过flushsqlflush但这只从表中删除数据,而不是实际表“shop_brand”。

我使用 django 2.0.1 和 python 3.6

database django sql-delete

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

PostgreSQL:删除行和其他行并引用已删除的行

我正在使用 PostgreSQL,我有一个family这样的表:

+----+-------+-----------+
| id | name  | parent_id |
+----+-------+-----------+
|  1 | adam  |         0 |
|  2 | eva   |         0 |
|  3 | peter |         2 |
|  4 | pan   |         3 |
+----+-------+-----------+
Run Code Online (Sandbox Code Playgroud)

现在当我删除这个人时,我也希望孩子们被删除。例如,从列表中WHERE name='peter'删除'peter'和删除'pan'。当我删除'eva',她,'peter'并被'pan'删除。

现在我想删除初始行并从删除的行中获取 id。然后我会再次删除,直到现在 id 被返回。请注意,一个人只有一个父母,但可以有几个孩子。

SQL 中有没有一种巧妙的方法来解决这个问题?如果没有,如何取回所有已删除行的 ID?

sql postgresql recursion sql-delete

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

SQL Delete 语句中的多个条件

我将 java 与 mysql 结合用于 Web 应用程序。我想问一下这个语句是否可以正常工作。

String delete="DELETE FROM `eoms`.`order` WHERE (`employeeID` = '"+eID+"', orderTime = '"+mealName+"', orderDate = '"+curDate+"');";
Run Code Online (Sandbox Code Playgroud)

java mysql sql sql-delete

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

如何找到阻止另一个查询的查询?

我正在尝试删除drop table temp;查询永远运行的空表 。

因此,我试图找到可能阻止当前查询的其他查询。这是我尝试过的:

SELECT *
  FROM pg_locks l
  JOIN pg_class t ON l.relation = t.oid AND t.relkind = 'r'
 WHERE t.relname = 'temp';

Run Code Online (Sandbox Code Playgroud)

此查询返回零结果

SELECT database, gid FROM pg_prepared_xacts;
Run Code Online (Sandbox Code Playgroud)

这也没有给出任何结果。

该表是一个分区表,附加在该表上的分区已经被成功删除。

我什至无法获得\d temp.

发生了什么事?我怎样才能解决这个问题?

当我在本地尝试相同时,这不会发生。工作得很好。

sql postgresql partitioning sql-delete

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