我有 n 个表都具有相同的字段:Username
和Value
. 同一个用户名可以在每个表上有多个寄存器,但每个表的组合Username/Value
都是唯一的。
我想将这些表连接成一个表,其中包含出现在所有表上的所有用户,并具有所有不同的(用户名/值)对。
例子
表 A:
{(User1,Value1);(User1,Value2);(User2,Value2);(User3,Value4)]
表 B:
{(User1,Value4);(User3,Value5)]
表 C:
{(User1,Value5);(User1,Value2);(User2,Value7);(User3,Value8)]
期望的输出
Table D: {(User1,Value1);(User1,Value2);(User1,Value4);(User1,Value5);(User3,Value4);(User3,Value5);(User3,Value8)}
现在我正在做这样的多个连接(使用 perl)
SELECT *
INTO $target_table
FROM (SELECT *
FROM $table1
WHERE bname IN (SELECT DISTINCT bname FROM $table2)
UNION
SELECT *
FROM $table2
WHERE bname IN (SELECT DISTINCT bname FROM $table1)
) UN
然后在第三个表之间进行相同的连接target_table
,依此类推,但我认为这应该是一种更好的方法。
有什么提示吗?