是否有可能檢索查詢返回的列數的計數?這可以很容易地使用PHP等綁定腳本語言完成,但我正在尋找僅用於db的解決方案。如何在返回的列數爲動態時計算MySQL查詢的列數?
例子:
CountCols(SELECT 'a','b','c')
=> 3
CountCols(SELECT * FROM information_schema.session_variables)
=> 2
是否有可能檢索查詢返回的列數的計數?這可以很容易地使用PHP等綁定腳本語言完成,但我正在尋找僅用於db的解決方案。如何在返回的列數爲動態時計算MySQL查詢的列數?
例子:
CountCols(SELECT 'a','b','c')
=> 3
CountCols(SELECT * FROM information_schema.session_variables)
=> 2
這會爲你工作嗎?
select
count(*)
from
`information_schema`.`columns`
where
`table_schema` = 'my_table_schema' and `table_name` = 'my_table_name';
你只需要如果表名在多個數據庫中不存在使用table_schema
。
根據您的回覆評論,您正在計算動態列數。您可能可以使用臨時表執行此操作,但不能在沒有可能的情況下訪問臨時表的數據installing a patch。
值得注意的是,有a similar outstanding SO question問如何從臨時表中選擇列。
這將是這個想法,但我更尋找一些通用的東西。問題是我需要知道任意結果的列數(例如)。這些不存儲在信息架構中。 – 2013-02-14 22:39:50
將它們選擇到視圖或臨時表中,然後訪問information_schema?我們可以搜索一些這樣做的補丁。 – JoshDM 2013-02-14 22:41:44
以下是有補丁程序可以添加臨時表的權限的人員:http://venublog.com/2010/02/03/show-temporary-tables/;同時,從臨時表中選擇列類似於這個未答覆的SO問題:http://stackoverflow.com/questions/10443672/list-of-temporary-table-columns-mysql – JoshDM 2013-02-14 22:47:05
那麼,如果你想知道在一個表中的列只是做:
DESCRIBE `table_name`
否則就沒有「真正」的方式來獲得的列數選擇查詢,因爲除了選擇*
以外,您選擇了某些列 - >所以您將將知道您選擇了多少列。
雖然這是事實,但我無法從「描述」中獲得行數。你有一點我通常應該知道列。情況並非總是如此。 – 2013-02-14 22:38:21
您最有可能在這裏找到答案:http://dev.mysql.com/doc/refman/5.0/en/columns-table.html
編寫一個查詢過的那個,需要一個表名PARAM,然後查詢該表的列和總結這件事。
出於好奇 - 這有什麼用處?當我需要知道查詢返回多少列時,我無法想到這種情況,除非在編程上下文中我正在做一些相當通用/抽象的事情。 – ruakh 2013-02-14 22:33:28