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

问题描述 投票:0回答:4

我正在批量执行一些 SQL 语句(使用

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

mysql output columnheader suppression
4个回答
332
投票

使用

-N
-N
的别名是
--skip-column-names
)选项调用mysql:

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 ...

22
投票

你可以像这样伪造它:

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

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

0
投票

“...希望... SELECT 语句不打印列标题...”的一个很好的理由是为了记录输出。

感谢@tom_warfield,我这样做了:

select "Relevant details from Stock Entry." as ""\G
select 
      SE.name
    , SED.item_code
    , SED.s_warehouse
    , SED.t_warehouse
    , REPLACE(SED.serial_no,'\n',', ') as serial_no
from
    `tabStock Entry` SE left join `tabStock Entry Detail` SED 
    :
    :

我的输出如下所示:

*************************** 1. row ***************************
: Relevant details from Stock Entry.
+--------------------+-------------------------------+--------------------------+----------------------------+---------------------------------------------------------------------------------------------------------------------+
| name               | item_code                     | s_warehouse              | t_warehouse                | serial_no                                                                                                           |

请注意,

"\G"
而不是
";"
每行输出一个属性,而不是每行输出一行。


0
投票

您可以使用 -s

-N
选项运行
MySQL CLI 命令

示例:

mysql -u username -p -sN -e "SELECT * FROM database.table" 
© www.soinside.com 2019 - 2024. All rights reserved.