【问题标题】:MYSQL - Insert results in table from two selectsMYSQL - 从两个选择中将结果插入表中
【发布时间】:2017-01-18 18:07:47
【问题描述】:

假设我有 2 个不同的选择语句,每个语句提供一列。 假设选择语句提供以下数据:

SELECT 1            SELECT 2
|id|                 |nr|
----                 ----
456                   14
234                   5
512                   26
678                   67
987                   87
632                   24

我正在尝试弄清楚如何进行查询以插入以下数据:

my_table
|  id  |  nr  |  col3  | ...
   456    14     ...
   234    5      ...
   512    26     ...
   678    67     ...
  ...

我必须提到,在我的选择中,我使用了多行子查询。

非常感谢!

【问题讨论】:

  • 它们产生的行数是否相同?两者之间有什么关系吗?使用每个带有标识列的临时表,然后将标识列上的 2 个表连接起来以插入到my_table
  • 是的,它们产生相同数量的行...它们之间没有关系
  • 那么你能按照我的建议使用临时表吗?
  • 这是我的问题,我试图将它们加入一个表,但它为我提供了笛卡尔积。每个选择返回 140 行,连接提供 20000 行
  • 你能用ROW_NUMBER()从每个数据集中生成一个索引吗?

标签: mysql sql wordpress


【解决方案1】:

在 MySQL 中,您可以使用变量来枚举值,然后使用 join:

select . . . 
from (select s.*, (@rn1 := @rn1 + 1) as rn
      from (<select 1>) s cross join
           (select @rn1 := 0) params
     ) s1 join
     (select s.*, (@rn2 := @rn2 + 1) as rn
      from (<select 2>) s cross join
           (select @rn2 := 0) params
     ) s2
     on s1.rn = s2.rn;

我建议在每个子查询中放置一个明确的order by

【讨论】:

    猜你喜欢
    • 2018-05-11
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 2011-05-27
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多