从WordPress数据库中删除重复行,其中列在phpmyadmin中重复

时间:2014-04-17 作者:Sortitout

我有一个像这样的wordpress表(phpmyadmin和MySQL)

| id |  meta_key | meta_value |
+----+-----------+------------+
| 1  | import_id | abc        |
| 2  | import_id | abc        |
| 3  | import_id | def        |
| 4  | import_id | xyz        |
| 5  | import_id | xyz        |
| 6  | import_id | xyz        |
| 7  | something | 123        |
| 8  | something | 234        |
+----+-----------+------------+
我需要获取所有重复行的id,其中meta\\u key=\'import\\u id\'

以便从另一个表中删除它们。

我想保持“meta\\u value”相同的每个返回行的MIN(id)

i、 e输出应为:

| id |  meta_key | meta_value |
+----+-----------+------------+
| 2  | import_id | abc        |
| 3  | import_id | def        |
| 6  | import_id | xyz        |
+----+-----------+------------+
或者只是

| id |
+----+
| 2  | 
| 3  | 
| 6  | 
+----+
请帮助,因为这可能是一个重复的问题,我仍然有问题,因为我的SQL有点生疏。

我可以在meta\\u key=\'import\\u id\'这样的位置获取副本:

SELECT id,meta_value
FROM TABLE 
WHERE meta_key=\'import_id\'
GROUP BY meta_value
HAVING Count(meta_value) > 1
我想从中得到非MIN(id)值

2 个回复
SO网友:Cameron L

如果要保留id值最低的行:

DELETE n1 FROM table n1, table n2 WHERE n1.id > n2.id AND n1.meta_key = n2.meta_key
或者,如果要保留id值最高的行:

DELETE n1 FROM table n1, table n2 WHERE n1.id < n2.id AND n1.meta_key= n2.meta_key

SO网友:MahdiY

从您的wp_usermeta 表并尝试:

DELETE FROM `wp_usermeta` WHERE `umeta_id` NOT IN (SELECT * FROM (SELECT MAX(`um`.`umeta_id`) FROM `wp_usermeta` um GROUP BY `um`.`meta_key`, `um`.`meta_value`) x)
使用MIN 而不是MAX 保留id最低的行。

结束

相关推荐

jQuery does not work

我正在从事一个需要jQuery的项目。我将其添加到我的函数中,如果我查看我的页面源代码,脚本将加载到我的标题中,但jQuery不起作用。我做错了什么?function stn_script_enqueuer() { wp_register_script( \'ajax-vote\', get_template_directory_uri() . \'/js/ajax-vote.js\', array(\'jquery\') ); $nonce