3

クエリが返す列の数を取得することはできますか? これは、php などのバインドされたスクリプト言語で簡単に実行できますが、db のみのソリューションを探しています。

例:

CountCols(SELECT 'a','b','c')
    => 3
CountCols(SELECT * FROM information_schema.session_variables)
    => 2
4

3 に答える 3

3

これはうまくいきますか?

select 
    count(*)
from
    `information_schema`.`columns`
where
    `table_schema` = 'my_table_schema' and `table_name` = 'my_table_name';

table_schemaテーブル名が複数のデータベースに存在する場合にのみ使用する必要があります。


応答コメントに基づいて、動的な列数を数えようとしています。一時テーブルを使用してこれを実行できる場合もありますが、パッチをインストールしないと一時テーブルのデータにアクセスできません。

注目すべきは、一時テーブルから列を選択する方法を尋ねる同様の未解決の SO 質問があります。

于 2013-02-14T22:37:20.240 に答える
2

テーブルの列を知りたい場合は、次のようにします。

DESCRIBE `table_name`

そうしないと、選択する以外*に特定の列を選択するため、選択クエリで列数を取得する「実際の」方法はありません->したがって、選択している列の数がわかります。

于 2013-02-14T22:35:01.550 に答える
1

おそらくここで答えが見つかります:http://dev.mysql.com/doc/refman/5.0/en/columns-table.html

テーブル名のパラメーターを取得するクエリを作成し、そのテーブルの列をクエリして合計します。

于 2013-02-14T22:38:00.067 に答える