我试图将多个MySQL表导出到一个CSV文件中,这些表的列数不同,没有任何共同之处。一个例子如下:
表1:
ID| Name
1 | Ted
2 | Marry
null| null
表2:
Married| Age | Phone
Y | 35 | No
N | 25 | Yes
Y | 45 | No
我想得到的结果是:
ID| Name | Married | Age | Phone
1 | Ted | Y | 35 | No
2 | Marry | N | 25 | Yes
null| null | Y | 45 | No
是否可以使用MySQL命令?我尝试了所有类型的join
,但它并没有给我我需要的结果。
答案 0 :(得分:1)
尝试此查询:
SELECT * FROM
(SELECT @n1:=@n1+1 as 'index', Table1.* FROM Table1, (select @n1:=0)t)t1
natural join (SELECT @n2:=@n2+1 as 'index', Table2.* FROM Table2, (select @n2:=0)t1)t2 ;
您可以在this fiddle中看到一个工作示例。
在示例中,我们为 Table1 和 Table2 以及natural join
2个表格生成索引列。
这种方式使用SELECT
表返回的行位置来完成连接,而没有任何ORDER
运算符,通常这不是一个好主意!
答案 1 :(得分:0)
我不太确定你明白你在问什么,但你确定你可以加入两张桌子,而不是真正关心哪些行会匹配:
SET @i1=0;
SET @i2=0;
SELECT * INTO OUTFILE 'xyz' FIELDS TERMINATED BY ','
FROM (SELECT @i1:=@i1+1 as i1, table1.* FROM table1) AS a
JOIN (SELECT @i2:=@i2+1 as i2, table2.* FROM table2) b ON (a.i1=b.i2);