![](/img/trans.png)
[英]MySQL LAST_INSERT_ID() with INSERT INTO tablea SELECT FROM tableb
[英]mysql - select * from tableA, tableB - problem
這是有效的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。
從技術上講,這不是一個無限循環-您正在創建兩個表的笛卡爾積-這意味着對於表a中的每一行,表b中的每一行都會重復。 這幾乎從來都不是您想要做的-這意味着您的輸出將是AXB行,其中A是表A中的行數,B是表B中的行數。
您可以通過選擇兩個語句並兩次附加到文件,將兩個表聯合在一起或將它們聯接在一起來完成此任務。 Google for SQL Union和INNER JOIN了解更多。
該查詢將產生交叉聯接,因此行數將是表A的數量*表B的數量。
例如,如果每個表中都有100,000行,則CSV最終將以10,000,000,000行結尾。
如果只想獲取TableA的所有記錄,然后按順序獲取TableB的所有記錄,則可能需要使用union
關鍵字。
SELECT * FROM TableA
UNION
SELECT * FROM TableB
INTO OUTFILE 'c:/test.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n' ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.