mysql - 一起获取多个 MySQL 查询的输出

标签 mysql bash

我正在编写一个脚本,它从不同的 mysql 表中获取一些数据:

#!/bin/bash
/usr/bin/mysql --password=****** --database=mydb<<EOMYSQL
select field1, field2 from table1 left join table2 on etc
into outfile '/home/jm/mysql/file1.txt';
select field3 from table3 left join table4 on etc
into outfile '/home/jm/mysql/file2.txt';
select field4,field5,field6,field7 from table5 left join table6 on etc
into outfile '/home/jm/mysql/file3.txt';
EOMYSQL

我的“问题”是我需要使用 3 个不同的输出文件,然后再合并它们。 有什么办法可以一起获得 3 个查询的输出吗?例如:

field1 field2 field3 field4 field5 field6 field7 

谢谢,

PS:尝试过“联合所有”,但看起来每个查询需要相同数量的字段。

最佳答案

是的,UNION 要求每个查询的字段数量相同,但您可以用空字符串填充它们:

select field1, field2, "", "", "", "", "" from table1 left join table2 on etc
union
select "", "", field3, "", "", "", "" from table3 left join table4 on etc
union
select "", "", "", field4, field5, field6, field7 from table5 left join table6 on etc

你也可以使用NULL:

select field1, field2, NULL, NULL, NULL, NULL, NULL from table1 left join table2 on etc
union
select NULL, NULL, field3, NULL, NULL, NULL, NULL from table3 left join table4 on etc
union
select NULL, NULL, NULL, field4, field5, field6, field7 from table5 left join table6 on etc

关于mysql - 一起获取多个 MySQL 查询的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14122698/

相关文章:

linux - 一般如何将可执行文件添加到用户路径

mysql - 我需要在结果集中打印变量

union/join 联合使用的mysql问题

linux - 如何获取目录的绝对路径?

ruby - 为目录中的所有文件(递归地)创建符号链接(symbolic link)到其他目录

bash - 将 2 行组合在一起但 "interlaced"

mysql - 无法连接到 Mac OS 10.10.5 上的 mySQL v5.6.26。几天后

php - 获取周末后即将举行的比赛

带有数字破折号的mysql正则表达式搜索字符串

linux - 强制 cli 实用程序在不提供配置选项且仅写入文件时写入 stdout