2015-05-12 48 views
0

我從命令行運行一些SQL查詢如下:空結果打印MySQL的列名設置

cat my_query.sql | mysql --defaults-file=my_conf.cnf 

我需要打印的列名查詢是否返回任何數據或沒有。 當前沒有要返回的數據時,即查詢返回空結果集時,此命令不會打印任何內容。

例如我的查詢是:

-- id=-1 doesn't exist 
SELECT col1, col2 FROM table WHERE id=-1 

我需要這個查詢返回

col1 col2 

相反,它沒有返回。 使用純粹的mysql和標準的unix命令可以做到這一點嗎?

謝謝。

+0

您可以將預期的查詢和UNION ALL作爲模擬其後的空行的「虛擬」SELECT。 UNION結果使用UNION的第一個查詢的數據類型和列名稱。 – Uueerdo

+0

我想你建議添加一個像SELECT一樣的虛擬SELECT'',''。 它會工作,但它會在結果的末尾添加一個新行和幾個製表符。這不是最乾淨的解決方案,但它可能工作。 我正在尋找一個mysql命令選項來做到這一點,但可能沒有。謝謝。 – burhan

+0

是的,這不是理想的解決方案,但如果你總是這樣做,那麼你總是忽略最後一行,或者你可以給你的假選擇一些明顯的「標誌」值,比如''[cmdlinedummy]''作爲字符串。 – Uueerdo

回答

2

添加UNION ALL的選擇具有「虛擬」 /空數據可能的工作:

SELECT col1, col2 FROM table WHERE id=-1 
UNION ALL 
SELECT '', '' -- OR 0, 0 whatever is appropriate 
; 

我不運行命令行查詢,所以這通常是假設它會給你列名稱,如果您的結果中至少有一行。

+0

我用你的想法,並添加這個去除最後一行。 「| sed'$ d'」 – burhan