16

次のコマンドを実行すると、構文エラーが発生します。

show columns from (select * from (select * from my_table) as T)

テーブルからではなく、自分が作成したクエリの列を表示するにはどうすればよいですか?

4

5 に答える 5

5

Java を使用して、MySql クエリから列を取得しています。

Java で結果セットの列情報を取得する最良の方法は、次のResultSetMetaDataインターフェイスを使用することです。

PreparedStatement stmt = null;
ResultSet result = null;
ResultSetMetaData meta = null;

try {
    stmt = con.prepareStatement("SELECT * FROM MyTable"); 
    result = stmt.executeQuery();
} catch (SQLException e) {
    System.out.println("SQLException: "+e.getMessage());
    System.exit(1);
}
System.out.println("Successful query");

try {
    meta = result.getMetaData();
    System.out.println("Total columns: " + meta.getColumnCount());
    System.out.println("Name of column 1: " + meta.getColumnName(1));
    System.out.println("Type of column 1: " + meta.getColumnTypeName(1));

    System.out.println("Name of column 2: " + meta.getColumnName(2));
    System.out.println("Type of column 2: " + meta.getColumnTypeName(2));
} catch (SQLException e) {
    System.out.println("SQLException: "+e.getMessage());
    System.exit(1);
}
System.out.println("Successful metadata report");

私のテーブルは宣言されています:

CREATE TABLE `MyTable` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
);

サンプル Java コードの出力:

Successful query
Total columns: 2
Name of column 1: id
Type of column 1: BIGINT UNSIGNED
Name of column 2: name
Type of column 2: VARCHAR
Successful metadata report

名前とデータ型以外に、結果セット列に関するその他の情報を取得できます。ResultSetMetaData インターフェイスの完全なリファレンス ドキュメントについては、http://docs.oracle.com/javase/8/docs/api/java/sql/ResultSetMetaData.htmlを参照してください。

于 2016-11-07T22:27:53.433 に答える
4

このステートメントは既存のテーブルのみを受け入れるようです。

そこで、クエリを使用して新しい一時テーブルを作成し、そこから列名を取得しました。

/*if the exporting table was created before, then delete it*/
DROP TABLE IF EXISTS exportTable;

/*create the temporary table (check if you have mySQL permission to do so)*/
CREATE TEMPORARY TABLE exportTable AS (your_query);

/*get result table (this is a table, the columns names are in the first column of this table ['Field'])*/
SHOW COLUMNS FROM exportTable;

一時テーブルはセッション コンテキストで作成され、セッションが閉じられると削除されます。同じことが SHOW COLUMNS テーブルにも当てはまります。これらのテーブルの作成がサーバー ディスクに与える影響を考慮することができます。

テーブルの作成時に TEMPORARY キーワードを使用できます。TEMPORARY テーブルは現在のセッションにのみ表示され、セッションが閉じられると自動的に削除されます。これは、2 つの異なるセッションが、互いに競合したり、同じ名前の既存の非 TEMPORARY テーブルと競合したりすることなく、同じ一時テーブル名を使用できることを意味します。(一時テーブルが削除されるまで、既存のテーブルは非表示になります。) 一時テーブルを作成するには、CREATE TEMPORARY TABLES 権限が必要です。

http://dev.mysql.com/doc/refman/5.7/en/create-table.html

于 2016-08-07T16:06:55.560 に答える
-3

これを試して -

SHOW COLUMNS FROM (select * from my_table) T

または直接SHOW COLUMNS FROM my_table

于 2010-09-15T09:48:20.437 に答える