删除少于5个字的评论/内容

时间:2014-03-20 09:58:30

标签: mysql sql wordpress phpmyadmin

我的网站上有很多无用的批准评论。我使用删除它们的一种方法是

DELETE FROM wp_comments WHERE comment_content LIKE '%agree%with%you,%thanks%, '

然而,这也是删除好评,并遗漏了很多不好的评论。

如何修改查询以删除少于5个单词的评论。

由于实际数据库中有大量注释,我担心是否运行like命令,因为它将扫描超过20K行。有没有办法减轻负荷?

5 个答案:

答案 0 :(得分:1)

尝试使用LENGTH。您将删除下面少于35个字符的条目。我认为使用单词会更好。

length(comment_content) < 35 --//change length number as you want //35 characters
像那样:

  DELETE FROM wp_comments WHERE comment_content LIKE '%agree%with%you,%thanks%, '
                           AND   length(comment_content) < 35

DEMO HERE

答案 1 :(得分:1)

您可以尝试计算字符数,将所有空格替换为空''并减去它们。您需要CHAR_LENGTH()REPLACE

DELETE FROM wp_comments
WHERE (CHAR_LENGTH(comment_content) - CHAR_LENGTH(REPLACE(comment_content,' ',''))+1) < 5;

加1是一个调整,因为你的空间比单词少1个。

注意:CHAR_LENGTH()对于mysql,您可以将LENGTH()用于其他人。

答案 2 :(得分:1)

E.g:

SELECT LENGTH('this is a test')x,LENGTH(REPLACE('this is a test',' ',''))y;
+----+----+
| x  | y  |
+----+----+
| 14 | 11 |
+----+----+

14-11 = 3
3+1 = 4

This sentence has 4 words

答案 3 :(得分:1)

您可以尝试使用正则表达式,类似:

delete 
  from wp_comments
 where not (MyComment REGEXP '[A-Za-z]+([[:space:]]+[A-Za-z]+){4,}')

答案 4 :(得分:1)

最有效的方法是:

MySQL查询开始:

<强> -- Select All Rows

mysql> SELECT * FROM comments;
+----+---------------------------------------------------------------------------------------------------------------+---------------------+
| id | comments                                                                                                      | log_time            |
+----+---------------------------------------------------------------------------------------------------------------+---------------------+
|  1 | This Comment has 4 space                                                                                      | 2014-03-20 16:05:33 |
|  2 | Lorem ipsum dolor sit amet.                                                                                   | 2014-03-20 16:08:12 |
|  3 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laborum molest                                      | 2014-03-20 16:08:12 |
|  4 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa, eum, fuga dolorum cupiditate blanditiis enim  | 2014-03-20 16:08:29 |
|  5 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magnam                                              | 2014-03-20 16:08:29 |
|  6 | Lorem ipsum dolor sit amet.                                                                                   | 2014-03-20 16:09:09 |
|  7 | Lorem ipsum dolor sit amet.                                                                                   | 2014-03-20 16:09:16 |
|  8 | Lorem ipsum dolor sit amet.                                                                                   | 2014-03-20 16:09:18 |
+----+---------------------------------------------------------------------------------------------------------------+---------------------+
8 rows in set (0.00 sec)

-- Check Space Count

mysql> SELECT comments, (
    -> length( trim( comments ) ) - length( replace( trim( comments ) , ' ', '' ) )
    -> ) AS total_space
    -> FROM comments
    -> LIMIT 0 , 30;
+---------------------------------------------------------------------------------------------------------------+-------------+
| comments                                                                                                      | total_space |
+---------------------------------------------------------------------------------------------------------------+-------------+
| This Comment has 4 space                                                                                      |           4 |
| Lorem ipsum dolor sit amet.                                                                                   |           4 |
| Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laborum molest                                      |           9 |
| Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa, eum, fuga dolorum cupiditate blanditiis enim  |          14 |
| Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magnam                                              |           8 |
| Lorem ipsum dolor sit amet.                                                                                   |           4 |
| Lorem ipsum dolor sit amet.                                                                                   |           4 |
| Lorem ipsum dolor sit amet.                                                                                   |           4 |
+---------------------------------------------------------------------------------------------------------------+-------------+
8 rows in set (0.00 sec)

<强> -- Delete Those Records who Has less than 5 words

mysql> DELETE FROM comments WHERE (
    -> length( trim( comments ) ) - length( replace( trim( comments ) , ' ', '' ) )
    -> ) < 5;
Query OK, 5 rows affected (0.16 sec)

<强> -- Select All Rows Again to Verify Rows

mysql> SELECT * FROM comments;
+----+---------------------------------------------------------------------------------------------------------------+---------------------+
| id | comments                                                                                                      | log_time            |
+----+---------------------------------------------------------------------------------------------------------------+---------------------+
|  3 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Laborum molest                                      | 2014-03-20 16:08:12 |
|  4 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsa, eum, fuga dolorum cupiditate blanditiis enim  | 2014-03-20 16:08:29 |
|  5 | Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magnam                                              | 2014-03-20 16:08:29 |
+----+---------------------------------------------------------------------------------------------------------------+---------------------+
3 rows in set (0.00 sec)

在您的情况下,您可以这样使用:

-- Check Space Count
SELECT comment_content, (
length( trim( comment_content ) ) - length( replace( trim( comment_content ) , ' ', '' ) )
) AS total_space
FROM wp_comments
LIMIT 0 , 30;

-- Delete those comments who has less than 5 words
DELETE FROM wp_comments WHERE (
length( trim( comment_content ) ) - length( replace( trim( comment_content ) , ' ', '' ) )
) < 5;

<强> -- Live DEMO

点击此处查看 Live DEMO