我试图在MySQL数据库中删除过期的条目,在创建或更新名为lastBeat的字段时使用CURRENT_TIME进行更新,并使用以下查询来检查/删除超过20秒的行:
DELETE * FROM `rmachines` WHERE
`lastBeat` < (NOW() - 20);
Run Code Online (Sandbox Code Playgroud)
我也尝试过CURRENT_TIME而不是NOW()
有2个主循环:
每秒更新rmachines中的一行
执行删除查询
如果2快速执行,当时间滚动到下一分钟(即59-60秒)时,它会删除该行,就像它已经过期一样(即使它确实没有!),否则它表现良好.
如果2每秒执行一次这不是那么明显,那么"错误到期"很少发生,但我每秒运行5次以暴露"问题".
我找到了一个解决方案,经过测试并且似乎在相同的情况下工作:
但谁能告诉我为什么我的方法不起作用?
我有下表:
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仍然需要一段时间,即使表现在是空的.这里发生了什么?
我想删除数据库中的一行,我有 2 个选项;一是用普通列删除行,二是主键?
我知道主键更好,但为什么呢?
我需要从我的一个表中删除所有重复的记录,问题是没有任何id或唯一或键列,所以我不能做这样的事情:
delete from tbl using tbl,tbl t2 where tbl.locationID=t2.locationID
and tbl.linkID=t2.linkID and tbl.ID>t2.IDRun 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) 有这样的桌子
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)。请问有没有更有效的方法?
这个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) 我更改了模型并进行了迁移。然后我又更改了一次模型,当尝试 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”???我已经尝试过flush,sqlflush但这只从表中删除数据,而不是实际表“shop_brand”。
我使用 django 2.0.1 和 python 3.6
我正在使用 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?
我将 java 与 mysql 结合用于 Web 应用程序。我想问一下这个语句是否可以正常工作。
String delete="DELETE FROM `eoms`.`order` WHERE (`employeeID` = '"+eID+"', orderTime = '"+mealName+"', orderDate = '"+curDate+"');";
Run Code Online (Sandbox Code Playgroud) 我正在尝试删除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-delete ×10
mysql ×5
sql ×4
delete-row ×2
postgresql ×2
timestamp ×2
count ×1
database ×1
datetime ×1
django ×1
java ×1
partitioning ×1
primary-key ×1
records ×1
recursion ×1
sqlite ×1
triggers ×1