簡體   English   中英

mysql-從tableA,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM