如何将查询产生的表连接到存储在mysql上的过程的另一个临时表中?

时间:2018-07-27 20:32:23

标签: mysql sql mysql-python

我有一个临时查询,例如:

CREATE TEMPORARY TABLE IF NOT EXISTS table4 AS (select * from table1)

然后,我从查询中得到另一个表,例如:

select column from table2

我要做的是将此列连接为临时表上的新列。内部联接不起作用,因为它们没有公共栏 这就像是轴数= 0的python上的concatenate()。

我将不胜感激

1 个答案:

答案 0 :(得分:1)

如果我正确理解,您想将第二个查询的合并结果添加为临时表的另一列。没有更多上下文就没有多大意义,因为您为什么要在每一行的新列上获得相同的结果。但是我的解决方案在这里:

CREATE TEMPORARY TABLE IF NOT EXISTS table4 AS
    (
        select
            *,
            (select group_concat(column) from table2 group by null) as concatcolumn
        from
            table1
    )

我在group_concat上按NULL分组,以便它对所有行进行分组。在此“嵌套”内部(在列定义内部甚至将其称为嵌套的内部嵌套吗?),您可以在使该问题更有意义的条件处添加位置。希望此解决方案有帮助。干杯,

*****编辑****

基于OP的注释,并假设两个表的行均对齐(匹配的行具有相同的行号,但没有匹配的键)。这比我预期的要困难得多,因为它被标记为MySQL,但是此DBRM没有排名功能。这是我想出的未经测试的结果。

CREATE TEMPORARY TABLE IF NOT EXISTS table4 AS
    (
        select
            t1.*,
            t2.column
        from
            (
            select t.*,@rownum := @rownum + 1 as rank from table1 t, (select @rownum := 0) r
            ) t1
        join
            (
            select t.*,@rownum := @rownum + 1 as rank from table2 t, (select @rownum := 0) r
            ) t2
        on
            t1.rank = t2.rank
    )