MySQL:将多个表导出为CSV文件

时间:2015-07-17 08:42:14

标签: mysql csv

我试图将多个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,但它并没有给我我需要的结果。

2 个答案:

答案 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);