【问题标题】:MySQL, insert while select from two tablesMySQL,从两个表中选择时插入
【发布时间】:2018-05-11 06:43:54
【问题描述】:

我想插入一个两列的表,第一列的数据来自一个选择,而第二列来自另一个选择,两个选择返回相同的行数。结果表如下所示:

target table column-1 | target table column-2
---------------------------------------
1st select row #1  | 2nd select row #1  
1st select row #2  | 2nd select row #2  
1st select row #3  | 2nd select row #3

阅读了很多stackoverflow帖子并尝试了很多但无法成功。

【问题讨论】:

  • 这是您的想法吗? link

标签: mysql select insert


【解决方案1】:

编写一个返回要插入的行的 SELECT 语句。

为了使第一个选择的行与第二个选择的行匹配,我们需要一些匹配条件。如果您没有要匹配的键,那么您可以使用用户定义的变量“发明”键。 (这对于大型套装来说会很昂贵。)

这是一个例子:

 SELECT fsel.col1
      , fsel.col2
      , ssel.colX 
      , ssel.colY
   FROM ( -- "1st select"
          SELECT a.col1
               , a.col2
               , @frn := @frn + 1 AS frn
            FROM sometable a 
           CROSS
            JOIN ( SELECT @frn := 0 ) i 
           ORDER BY a.col1
        ) fsel
   JOIN ( -- "2nd select"
          SELECT b.colX
               , b.colY
               , @srn := @srn + 1 AS srn
            FROM someothertable b
           CROSS
            JOIN ( SELECT @srn := 0 ) i 
           ORDER BY b.colX
        ) ssel
     ON ssel.srn = fsel.frn
  ORDER BY fsel.frn

【讨论】:

  • 非常感谢,但是太复杂了,无法理解。 :-) 正如你所说,两个源“选择”之间没有关联。好点子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多