如何使用SQL编辑某些列mysql数据库中的多个记录

时间:2012-10-21 13:50:08

标签: mysql sql insert sql-update

我在'column1'列中有多个结构记录,我想在同一列中更新类型。

这些字段仅包含一个FIELD中的语言,类别级别和名称的信息。

信息按符号分隔如下:

  1. “:”(两点)用语言分隔语言(语言%:Top /%)
  2. “/”(斜线)按类别分隔根(Top / level_1),按不同级别分类分类(level_1 / level_2)。
  3. 因此,FIELD将具有以下形式“语言:顶级/级别/级别”
  4. 存储在FIELDS上的信息来自两个不同的来源,一个是内部的,另一个没有根的(无/ FIELDS)来自外部源,必须由SQL更新

    真实示例字段:

    &安培; LT; B和GT; Englisch&安培; LT; / B&安培; GT;:水平/测试/后

    &安培; LT; B和GT; Englisch&安培; LT; / B&安培; GT;:顶/水平/测试/后

    真实示例表:

    **before**                                           **after**
    language0:Top/level_0/name_category                  language0:Top/level_1/name_category
    language1:name_test2/name_category                   language1:name_test2/name_category
    language2:level_1/name_category                      language2:Top/level_1/level_2/name_category
    language3:level_1/level_2/name_category              language3:Top/level_1/level_2/name_category
    language4:level_1/level_2/level_3/name_category      language4:Top/level_1/level_2/level_3/name_category
    

    第一行已经更改,因此我们只需要选择那些以“language%:level_1 /%”开头的记录

    table_example1

    id    **column1**                       
    
    1    language0:Top/level_1/level_2/level_3/level_4
    2    language1:name_test2/etc/
    3    language2:level_1/level_2/level_3/level_4
    4    language3:level_1/level_2/level_3
    5    language3:level_1/level_2
    6    language%:level_1/
    

    注意:

    • 在示例中只能更新这些字段:行号3,4,5,6,表中只有列
    • 结果必须与行ID 1列1:language0:Top/name_test/etc/etc/
    • 相同
    • 行ID {2}中的字段language1:name_test2/etc/将被忽略,格式不同并存储不同的信息。
    • 不更改第2行的基础是不同的链接值:name_test2(name_test)LIKE'name_test /%'only
    • 此字段中不存在的#符号仅用于描述您可以在列之后,列
    • 之后查看
    • 只有在以下两点之后才会更新FIELD(:)正好有斜杠后面的表达式(level_1 /)

    其他以其他方式开始的记录不得修改。

    我该怎么做?

1 个答案:

答案 0 :(得分:1)

UPDATE `table_example1` SET `column1` = REPLACE(column1,':name_test/',':Top/name_test/');

在使用此查询之前创建备份。