mysql - 如何从一个表列中获取值,将它们与字符串连接并将它们插入到另一表中?

标签 mysql sql percona

如何:

  1. 从 table1.column1 获取值(例如 abc)

    table1.column1=abc

  2. 将它们与某些固定字符串连接起来,例如

    xxx yyy zzz

  3. 将结果作为单独的行插入到 table2.column2 中。最终结果应该是具有如下值的行:

    table2.column2=abc_xxx 表2.column2=abc_yyy table2.column2=abc_zzz

(table2 有一个连接列,指示 table2.column2 记录对应的 ID,以防万一)

  • table1.column1table1.item_id > 100 的所有记录重复此过程
  • 编辑:为了方便起见,我希望最终结果行序列如下所示:

    source1_xxx 源1_yyy 来源1_zzz 源2_xxx 源2_yyy source2_zzz

    不喜欢:

    source1_xxx 源2_xxx 源1_yyy 源2_yyy 来源1_zzz source2_zzz

    最佳答案

    如果我理解正确的话,您需要为 Table1 中的每个现有行添加 N(例如 3)个条目。如果是这样,您可以将 Table1 交叉连接到值的投影,如下所示:

    INSERT INTO Table2(column2)
        SELECT CONCAT(t1.column1, '_', x.col)
        FROM Table1 t1
        CROSS JOIN 
        (SELECT 'xxx' AS col
         UNION
         SELECT 'yyy'
         UNION 
         SELECT 'zzz') x;
    

    SqlFiddle here

    编辑

    查询已更新,以了解排序和过滤要求:

    INSERT INTO Table2(column2)
        SELECT CONCAT(t1.column1, '_', x.col)
        FROM Table1 t1
        CROSS JOIN 
        (SELECT 'xxx' AS col
         UNION
         SELECT 'yyy'
         UNION 
         SELECT 'zzz') x
        WHERE t1.ID > 100
        ORDER BY t1.column1 ASC, x.col ASC;
    

    With an updated SqlFiddle

    关于mysql - 如何从一个表列中获取值,将它们与字符串连接并将它们插入到另一表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29467803/

    相关文章:

    php - 托管站点发生错误

    mysql - JOIN 两个表返回值,但是当我使用 LEFT JOIN 时,它会返回语法错误

    mysql - 如何获得每组的最大行数?

    mysql - 如何将 sql 数据库 [sakila] 加载到 Neo4j 中?

    php - 如何使用 php 从 mysql 中正确检索数据?

    sql - 两个内部连接 ​​MYSQL

    mysql - 为 :- i used query ? 数据来自多个表编写正确的 SQL 查询

    mysql - 如何在 MySQL 字段中存储正则表达式模式并根据它检查输入?

    mysql - 尝试在 Percona 上使用 liquibase 会出现错误

    mysql - 配置: error: invalid MySQL root directory