当前位置:   article > 正文

MySQL复制表的数据insert into select_mysql insert into select

mysql insert into select

目录

1、使用的业务背景

2、如何使用及注意事项

3、实操结果

3.1、获得以前回答的试题信息用于存储新权重表

3.2、依据用户Id与2取余随机回答第3题

3.3、两者数据union操作 获得最后需要入库数据99条

3.4 最后所书写的SQL

3.5、最后插入后数据表数据

4、书写SQL语句或者更新数据一定的试验和小心

5、最后显示效果图


1、使用的业务背景

      本人最近在做一个项目,此业务以前是一个新手引导,新用户需要回答两个题目,然后根据用户回答的习惯来给予相关的课程推送信息。但是在第二个版本的时候,居然变更了。以前的第一题以前是两个选项(早上、晚上),结果加入的第三个选项(中午),于是有了(早上、中午、晚上),同时还增加了一个试题。同时需要根据回答结果计算权重,存储新的设计的表之中。

    引申出来一下两问题:

    (1)、以前回答的是晚上是B选项,现在变化为C选项了。

  (2)、现在以前回答的人未回答第三题。

   如何解决此问题:可能以下两种方案解决:

    (1)、删除以前回答过的数据,让以前的用户在回答一次,方法粗暴,但是疗效不错。但是会引来以前答过的用户反感,我已经答过为何还要继续回答呢?

    (2)、针对以前回答过的试题数据与试题基础数据联合查询,然后按照现在的设计表的规则,插入到新的权重表之中。同时通过获得用户最新答过的数据取最大时间一条数据作为生成回答第3题的基础信息数据,通过人为构造方式为用户自动,并且以用户id与2取余方式(id%2),依据余数随机生成第3题的答案信息。这样可以让以前回答试题的用户平稳的实现试题的回答。

   于是就需要使用 Insert into table select * from

2、如何使用及注意事项

    INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表(目标表)中,目标表中任何已存在的行都不会受影响。

   语句1:Insert into TargetTable(field1,field2,…) select value1,value2,… from Table1 where condition;

   语句2:Insert into TargetTable select * from Table1;

   说明:

            1)目标表TargetTable必须存在,MySQL不会自动创建;

             2)语句1一般用于两个表结构一致的情况,而语句2用于表结构不一致的情况;

             3)语句1中涉及的field1,field2也必须存在;

             4)若TargetTable有主键且不具备自动增长,则 field1, field2…中必须包括主键。

3、实操结果

3.1、获得以前回答的试题信息用于存储新权重表

  1. 1、获得以前回答过的试题信息SQL
  2. SELECT
  3. '02' AS lable_type,
  4. CASE
  5. WHEN a.question_id = 1
  6. OR a.question_id = 5 THEN
  7. 21
  8. WHEN a.question_id = 2
  9. OR a.question_id = 6 THEN
  10. 22
  11. END lable_sub_type,
  12. 0.2 AS user_habit_weight,
  13. a.question_id,
  14. a.user_answers,
  15. CASE
  16. a.user_answers
  17. WHEN 'A' THEN
  18. b.option_a
  19. WHEN 'B' THEN
  20. b.option_b
  21. WHEN 'C' THEN
  22. b.option_c
  23. END user_answer_text,
  24. a.creator_id,
  25. a.create_name,
  26. a.create_time,
  27. a.org_id,
  28. a.owner_company
  29. FROM
  30. (
  31. SELECT
  32. t.question_id,
  33. t.user_answers,
  34. t.creator_id,
  35. t.create_name,
  36. t.create_time,
  37. t.org_id,
  38. t.owner_company
  39. FROM
  40. ai_xqi_beginner_guidance_result t
  41. WHERE
  42. t.question_type = '01'
  43. AND t.creator_id IS NOT NULL
  44. AND t.owner_company != 10004
  45. ) a
  46. LEFT JOIN ai_xqi_beginner_guidance_question b ON a.question_id = b.id

3.2、依据用户Id与2取余随机回答第3题

  1. SELECT
  2. '02' AS lable_type,
  3. 23 AS lable_sub_type,
  4. 0.2 AS user_habit_weight,
  5. CASE
  6. c.owner_company
  7. WHEN 10001 THEN
  8. 9
  9. WHEN 10003 THEN
  10. 10
  11. END answered_question_id,
  12. CASE
  13. c.creator_id % 2
  14. WHEN 1 THEN
  15. 'A'
  16. WHEN 0 THEN
  17. 'B'
  18. END user_habit_answer,
  19. CASE
  20. c.creator_id % 2
  21. WHEN 1 THEN
  22. '一目十行'
  23. WHEN 0 THEN
  24. '慢条斯理'
  25. END user_habit_answer_text,
  26. c.creator_id,
  27. c.create_name,
  28. max( c.create_time ) AS create_time,
  29. c.org_id,
  30. c.owner_company
  31. FROM
  32. (
  33. SELECT
  34. t.creator_id,
  35. t.create_name,
  36. t.create_time,
  37. t.org_id,
  38. t.owner_company
  39. FROM
  40. ai_xqi_beginner_guidance_result t
  41. WHERE
  42. t.question_type = '01'
  43. AND t.creator_id IS NOT NULL
  44. AND t.owner_company != 10004
  45. ) c
  46. GROUP BY
  47. c.creator_id

3.3、两者数据union操作 获得最后需要入库数据99条

3.4 最后所书写的SQL

  1. /** 把以前回答过的新手引导(学习习惯)已经回答的 按照现有标准 相关权重值写入新的数据库表之中 */
  2. /** 1、获得已经已经答过人的新手习惯数据 2、根据所属公司 给每个添加一条 学习习惯第三题记录 */
  3. INSERT INTO ai_xqi_user_habit_weight_personas(
  4. lable_type,
  5. lable_sub_type,
  6. user_habit_weight,
  7. answered_question_id,
  8. user_habit_answer,
  9. user_habit_answer_text,
  10. creator_id,
  11. create_name,
  12. create_time,
  13. org_id,
  14. owner_company
  15. )
  16. SELECT
  17. *
  18. FROM
  19. (
  20. (
  21. SELECT
  22. '02' AS lable_type,
  23. CASE
  24. WHEN a.question_id = 1
  25. OR a.question_id = 5 THEN
  26. 21
  27. WHEN a.question_id = 2
  28. OR a.question_id = 6 THEN
  29. 22
  30. END lable_sub_type,
  31. 0.2 AS user_habit_weight,
  32. a.question_id,
  33. a.user_answers,
  34. CASE
  35. a.user_answers
  36. WHEN 'A' THEN
  37. b.option_a
  38. WHEN 'B' THEN
  39. b.option_b
  40. WHEN 'C' THEN
  41. b.option_c
  42. END user_answer_text,
  43. a.creator_id,
  44. a.create_name,
  45. a.create_time,
  46. a.org_id,
  47. a.owner_company
  48. FROM
  49. (
  50. SELECT
  51. t.question_id,
  52. t.user_answers,
  53. t.creator_id,
  54. t.create_name,
  55. t.create_time,
  56. t.org_id,
  57. t.owner_company
  58. FROM
  59. ai_xqi_beginner_guidance_result t
  60. WHERE
  61. t.question_type = '01'
  62. AND t.creator_id IS NOT NULL
  63. AND t.owner_company != 10004
  64. ) a
  65. LEFT JOIN ai_xqi_beginner_guidance_question b ON a.question_id = b.id
  66. ) UNION
  67. (
  68. SELECT
  69. '02' AS lable_type,
  70. 23 AS lable_sub_type,
  71. 0.2 AS user_habit_weight,
  72. CASE
  73. c.owner_company
  74. WHEN 10001 THEN
  75. 9
  76. WHEN 10003 THEN
  77. 10
  78. END answered_question_id,
  79. CASE
  80. c.creator_id % 2
  81. WHEN 1 THEN
  82. 'A'
  83. WHEN 0 THEN
  84. 'B'
  85. END user_habit_answer,
  86. CASE
  87. c.creator_id % 2
  88. WHEN 1 THEN
  89. '一目十行'
  90. WHEN 0 THEN
  91. '慢条斯理'
  92. END user_habit_answer_text,
  93. c.creator_id,
  94. c.create_name,
  95. max( c.create_time ) AS create_time,
  96. c.org_id,
  97. c.owner_company
  98. FROM
  99. (
  100. SELECT
  101. t.creator_id,
  102. t.create_name,
  103. t.create_time,
  104. t.org_id,
  105. t.owner_company
  106. FROM
  107. ai_xqi_beginner_guidance_result t
  108. WHERE
  109. t.question_type = '01'
  110. AND t.creator_id IS NOT NULL
  111. AND t.owner_company != 10004
  112. ) c
  113. GROUP BY
  114. c.creator_id
  115. )
  116. ) last
  117. ORDER BY
  118. last.creator_id ASC,last.lable_sub_type ASC

3.5、最后插入后数据表数据

 其中子标签为23的为新试题自动插入数据,为21标红的为修改C选项的数据,经过实际程序测试达到如何预期要求。

4、书写SQL语句或者更新数据一定的试验和小心

      本人发现在书写常量原来是02,结果写成了01,本身是21,22,23的子类型,结果写成11,12,13;所以必须在测试环境验证,否则一旦到生成库,就可能导致生产事故。

5、最后显示效果图

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/410176
推荐阅读
相关标签
  

闽ICP备14008679号