我想编写一个查询,从表中选择“描述”列中所有具有“小猪”一词3次以上的行。
我知道在名为Description的列中选择单词为“ piggy”的行的查询为:
SELECT * FROM表WHERE
Description
像“%piggy%”
因此,仅当单词“ piggy”出现3次以上时,我才需要进行选择。
最佳答案
Maris的回答很简单(除非我相信您希望超过3次),但是可以更轻松地自定义:
SELECT * FROM table WHERE DESCRIPTION LIKE CONCAT('%', REPEAT('piggy%', 4))
SELECT * FROM table WHERE Description != SUBSTRING_INDEX(Description, 'piggy', 4)
SUBSTRING_INDEX在此返回字符串中第四次出现的'piggy'左边的部分,或者返回不匹配多次的整个字符串(因此查询将丢弃与整个字符串匹配的行)。然后,如果您要更改所需的次数,只需更改数字即可。
当然,如果表中只有几行,那么所有这些选项都会非常慢。
关于sql - MySQL,如果单词在一个列中多次出现,则选择表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4231440/