我的网站上有很多无用的批准评论。我使用删除它们的一种方法是
DELETE FROM wp_comments WHERE comment_content LIKE '%agree%with%you,%thanks%, '
然而,这也是删除好评,并遗漏了很多不好的评论。
如何修改查询以删除少于5个单词的评论。
由于实际数据库中有大量注释,我担心是否运行like
命令,因为它将扫描超过20K行。有没有办法减轻负荷?
答案 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
答案 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