我想编写一个查询,从表中选择“描述”列中所有具有“小猪”一词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/

10-10 15:04