简单地连接2个表,无条件和交叉连接,MySQL

问题描述 投票:0回答:1
表1:

价值ab
表2:

价值cde
我需要得到这个结果:

价值价值acbd空e
因此,就像

简单连接一样,当第一个表中的行与第二个表中的相应(按顺序)行匹配时,没有任何条件。

作为一种解决方法,我想出了这个:

SELECT value, "table1" AS src FROM t1 UNION ALL SELECT value, "table2" AS src FROM t2
给出:

价值来源a表1b表1c表2d表2e表2
总体来说是合适的,但是可以按照我上面必要的结果所示来完成吗?

sql mysql join
1个回答
0
投票
您没有提到任何将定义顺序的列,在这种情况下,

value

列用于使用
ROW_NUMBER()
添加顺序。

    CTE table1_with_rownum 和 table2_with_rownum 将分配顺序。 然后
  • 然后根据 rownum 连接这些数据集,以便保持顺序,并将结果集联合起来以删除任何重复项。

小提琴

WITH table1_with_rownum AS ( SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rownum FROM table1 ), table2_with_rownum AS ( SELECT value, ROW_NUMBER() OVER (ORDER BY value) AS rownum FROM table2 ) SELECT t1.value AS value1, t2.value AS value2 FROM table1_with_rownum t1 LEFT JOIN table2_with_rownum t2 ON t1.rownum = t2.rownum UNION SELECT t1.value AS value1, t2.value AS value2 FROM table1_with_rownum t1 RIGHT JOIN table2_with_rownum t2 ON t1.rownum = t2.rownum ORDER BY value1;
输出

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.