这是一个有效的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。
答案 0 :(得分:4)
技术上不是无限循环 - 您正在创建两个表的笛卡尔积 - 这意味着对于表a中的每一行,表b中的每一行都将被复制。这几乎不是你想要做的 - 它意味着你的输出将是AXB行,其中A是表A中的行数,B是表B中的行数。
您要么通过选择两个语句并将文件追加到文件两次,将两个表联合在一起,或者将它们连接在一起来完成此任务。 Google for SQL Union和INNER JOIN了解更多信息。
答案 1 :(得分:1)
该查询将产生交叉连接,因此行数将是表A *表B的计数。
如果其中每个表中都有100,000行,那么您的CSV最终会有10,000,000,000行。
答案 2 :(得分: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' ;