如何抑制单个SQL语句的列标题输出?


113

我正在批量执行一些SQL语句(使用mysql命令行二进制文件)。我希望我的几个SELECT语句之一不打印列标题,而只打印所选记录。这可能吗?

Answers:


247

调用mysql用-N(别名为-N--skip-column-names)选项:

mysql -N ...
use testdb;
select * from names;

+------+-------+
|    1 | pete  |
|    2 | john  |
|    3 | mike  |
+------+-------+
3 rows in set (0.00 sec)

感谢ErichBSchulz指出-N别名。

要删除结果周围的网格(垂直和水平线),请使用-s--silent)。列用TAB字符分隔。

mysql -s ...
use testdb;
select * from names;

id  name
1   pete
2   john
3   mike

要输出没有标题且没有网格的数据,只需使用-s和即可-N

mysql -sN ...

3
中的快捷方式-N
ErichBSchulz,2015年

4
-sN对我来说很好,可以将输出分配给脚本中的变量:TABLES=$(mysql -sN -u $DB_USER -p$DB_PASS...
Michael J

5
这不仅适用于单个SQL语句,而且适用于整个会话。Oracle SQLPlus具有set feedback on并且set feedback off可以在会话的任何地方使用。MySQL是否具有等效功能?看起来这就是OP想要的。
codeforester

只是简短的注释,请使用testdb.names中的select *进行简化;没有明确的“使用”。
fcm

15

您可以像这样伪造它:

-- with column headings 
select column1, column2 from some_table;

-- without column headings
select column1 as '', column2 as '' from some_table;

Error: Type mismatch: expected type string, but got空别名的错误
QkiZ

看起来该错误来自MySQL Workbench,而不是MySQL。无论如何,您也可以使用单个空格代替空字符串,这在MySQL Workbench中似乎可行:select column1 as ' ', column2 as ' ' from some_table;
Tom Warfield
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.