将值添加到字段中

时间:2016-01-07 16:02:10

标签: mysql

继承了一个20,000图书数据库,其中包含一个名为' keywords'的特定字段。这是一个烂摊子,在一个叫做书的大桌子里。 试图为每个关键字前置一个值'字段,用于读取该字段中的单词,并使用一个明确的短语标识其确切类别。

所以,寻找“古老的”这个词。并预先设定价值' menu-ancient'。

UPDATE books SET keywords=CONCAT('menu-ancient, ',keywords) 
where keywords like '%ancient%';

这样可行,但接下来的查询并没有做我想要的事情!

它应该找到它刚刚完成的所有它们并通过它们找到它们中的哪一个也有“中世纪”这个词。在那里 - 给出子菜单菜单 - 古代中世纪。

UPDATE books SET keywords=CONCAT('menu-ancient-medieval, ',keywords) 
where keywords = 'menu-ancient' AND keywords LIKE '%medieval%';

一个示例字段是: 菜单古代,战争,中世纪,古代和中世纪,古代至19世纪,

我有一个古老的菜单,但是中世纪的位置无处可去!

1 个答案:

答案 0 :(得分:0)

您可以使用find_in_set()函数执行此操作。

这类似于以下示例:

SELECT * from books where FIND_IN_SET('menu-ancient', keywords) > 0;

您可以将其应用于更新查询

UPDATE books 
SET keywords=CONCAT('menu-ancient-medieval, ',keywords)
where
  FIND_IN_SET('menu-ancient', keywords)
  AND keywords LIKE '%medieval%';

注意:我不太确定我是否正确理解了问题的第二部分。我猜你可能不得不改变查询以在where子句中使用子查询。