一个查询表名称的结果,另一个查询表名称的结果,并导致多个csv输出文件

时间:2018-07-10 22:33:09

标签: mysql

我正在尝试更快地完成一项任务,并且遇到两个问题(希望可以包含在一个问题中,因为这两个问题都会出现在一个查询中)。

我想使用一个SQL查询的结果(多个ID)作为另一查询(FROM ...?)的表名。

然后(针对每个表)的最终结果应该用多个.csv OUTFILE而不是我目前拥有的输出。

我已经准备好两个查询,但是我认为这对于这个问题并不重要,这就是为什么我跳过了发布任何内容的原因。

您可能会给我有关最简单的SELECT查询的示例。

1 个答案:

答案 0 :(得分:0)

您可以使用服务器端准备好的语句:

https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html

以下是一个希望对您有所帮助的示例:

select @q:=concat("select count(*) from ", tbl_name) 
from my_db.my_tables where table_id = 3;
prepare s from @q;
execute s;

对于select count(*) from等于3的tbl_name值在my_db.my_tables中执行table_id都会导致执行结果。

要将结果导出为CSV,您可以执行以下操作:

select @q:=concat("select count(*) from ", tbl_name, 
" into outfile '/tmp/data.csv' fields terminated by ','") 
from my_db.my_tables where table_id = 3;

要详细了解SELECT ... INTO OUTFILE

https://dev.mysql.com/doc/refman/5.7/en/select-into.html