mysql - выбрать * из таблицы A, tableB - проблема
Это правильное утверждение 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-файл вырос в ГБ в размере.
3 ответа
Если вы хотите взять только все записи таблицы А, а затем все записи из таблицы В в последовательном порядке, union
Ключевое слово может представлять интерес.
SELECT * FROM TableA
UNION
SELECT * FROM TableB
INTO OUTFILE 'c:/test.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n' ;
Технически это не бесконечный цикл - вы создаете декартово произведение двух таблиц - это означает, что для каждой строки в таблице a каждая строка в таблице b будет дублироваться. Это почти никогда не то, что вы хотите сделать - это означает, что ваши выходные данные будут AXB-строками, где A - количество строк в таблице A, а B - количество строк в таблице B.
Вы либо хотите выполнить эту задачу, выбрав два оператора и дважды добавив в файл, ОБЪЕДИНЯЯ две таблицы вместе или СОЕДИНЯЯ их вместе. Google для SQL Union и INNER JOIN, чтобы узнать больше.
Этот запрос приведет к перекрестному соединению, поэтому количество строк будет равно количеству таблицы A * и количеству таблицы B.
Если бы в каждой из этих таблиц было 100000 строк, например, в CSV было бы 10 000000000 строк.