1

这是一个有效的 mysql 语句吗?

select * from TableA , TableB ;

如果不是,那么选择这两个表的正确 mysql 语句是什么。

为什么我认为这有问题是我写了一个mysql语句

select * from TableA, TableB INTO OUTFILE 'c:/test.csv' FIELDS TERMINATED BY ','  ENCLOSED BY '"'  LINES TERMINATED BY '\n' ;

它进入了无限循环。当我终止时。csv 文件的大小已经增长到 GB。

4

3 回答 3

4

从技术上讲,这不是一个无限循环——您正在创建两个表的笛卡尔积——这意味着对于表 a 中的每一行,表 b 中的每一行都将被复制。这几乎不是您想要做的——这意味着您的输出将是 AXB 行,其中 A 是表 A 中的行数,B 是表 B 中的行数。

您要么希望通过选择两个语句并附加到文件两次、将两个表联合在一起或将它们连接在一起来完成此任务。Google for SQL Union 和 INNER JOIN 以了解更多信息。

于 2009-12-14T12:38:51.660 回答
1

该查询将产生一个交叉连接,因此行数将是表 A 的计数 * 表 B 的计数。

例如,如果这些表中的每一个都有 100,000 行,那么您的 CSV 最终将有 10,000,000,000 行。

于 2009-12-14T12:41:17.613 回答
1

如果您只想按顺序获取 TableA 的所有记录,然后是 TableB 中的所有记录,则union可能会感兴趣关键字。

SELECT * FROM TableA
UNION
SELECT * FROM TableB 
    INTO OUTFILE 'c:/test.csv' 
    FIELDS TERMINATED BY ','  
    ENCLOSED BY '"'  
    LINES TERMINATED BY '\n' ;
于 2009-12-14T12:53:46.857 回答