gpt4 book ai didi

php - 删除具有 blob text/mediumtext mysql 的重复行

转载 作者:行者123 更新时间:2023-11-29 08:28:20 26 4
gpt4 key购买 nike

我看过很多关于使用 sql 命令删除行的帖子,但我需要过滤掉具有 mediumtext 的行。

我不断从解决方案中收到错误 Error Code: 1170. BLOB/TEXT column used in key specification without a key length,例如:

ALTER IGNORE TABLE foobar ADD UNIQUE (title, SID)


我的表很简单,我需要检查 mytext 中的重复项, id 是唯一的,它们是 AUTO_INCREMENT
请注意,该表大约有一百万行,并且所有尝试都会超时。我需要一个可以批量执行操作的解决方案,例如 WHERE id>0 AND id<100
我还在亚马逊上使用 MySQL Workbench RDS

从这样的表

+---+-----+-----+------+-------+
|id |fname|lname|mytext|morevar|
|---|-----|-----|------|-------|
| 1 | joe | min | abc | 123 |
| 2 | joe | min | abc | 123 |
| 3 | mar | kam | def | 789 |
| 4 | kel | smi | ghi | 456 |
+------------------------------+

我想要一张这样的 table

+---+-----+-----+------+-------+
|id |fname|lname|mytext|morevar|
|---|-----|-----|------|-------|
| 1 | joe | min | abc | 123 |
| 3 | mar | kam | def | 789 |
| 4 | kel | smi | ghi | 456 |
+------------------------------+

更新忘记提及这是在 amazon RDS 上使用 mysql workbench
我的表非常大,并且我不断从这个 sql 命令中收到错误 Error Code: 1205. Lock wait timeout exceeded:

DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name

此外,如果其他人遇到 MySQL workbench 超时问题,修复方法是
ojit_代码

最佳答案

选项#1:删除所有重复记录,留下每一条记录(例如具有 max(id) 的记录)

DELETE
FROM yourTable
WHERE id NOT IN
(
SELECT MAX(id)
FROM yourTable
GROUP BY mytext
)

您可能更喜欢使用 min(id)。

根据所使用的引擎,这将不起作用,并且会向您提供错误代码:1093。您无法在 FROM 子句中指定要更新的目标表“yourTable” 。为什么?因为删除一条记录可能会导致发生一些事情,使 WHERE 条件为 FALSE,即 max(id) 更改值。

在这种情况下,您可以尝试使用另一个子查询作为临时表:

DELETE
FROM yourTable
WHERE id NOT IN
(
SELECT MAXID FROM
(
SELECT MAX(id) as MAXID
FROM yourTable
GROUP BY mytext
) as temp_table
)

选项#2:使用临时表,如this示例或:

首先,创建一个具有最大 ID 的临时表:

   SELECT MAX(id) AS MAXID
INTO tmpTable
FROM yourTable
GROUP BY mytext;

然后执行删除:

DELETE
FROM yourTable
WHERE id NOT IN
(
SELECT MAXID FROM tmpTable
);

关于php - 删除具有 blob text/mediumtext mysql 的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17350376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com