あまり。 *
を使用できます 列ワイルドカード
すべての列を選択します。複数のテーブルを結合している場合は、 *
のプレフィックスを付けることで、特定のテーブルからすべての列を選択できます。 テーブル名またはエイリアス:
SELECT a.id, a.title, b.*
FROM articles AS a
JOIN blurbs AS b ON a.id = b.article
ただし、 *
は使用しないでください DB管理プログラムを作成している場合を除きます。
または、テーブルメタデータをフェッチして列名を取得することにより、SQLまたは別の言語でステートメントを作成することもできます。 MySQLだけを使用して、 COLUMNS<をクエリできます。 / code>
INFORMATION_SCHEMA
のテーブル
データベースを使用して列名を取得し、 GROUP_CONCAT
ステートメントの列リストを作成します。
SELECT CONCAT(
'SELECT ',
GROUP_CONCAT(COLUMN_NAME SEPARATOR ', '),
' FROM ', :db, '.', :table,
' WHERE ...'
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA=:db AND TABLE_NAME=:table
「:db」、「:table」、「...」を適切な値に置き換えます。プリペアドステートメントに変換して、任意のテーブルに使用することもできます。そこから、 PREPARE
および EXECUTE
構築されたステートメント。
プログラミング用のSQLに限定されていない場合は、それほど面倒ではないはずです。選択した言語のDBドライバーは、メタデータを取得するためのメソッドを提供する可能性があります。実際の実装は、純粋なSQLアプローチ(列名の取得、ステートメントのアセンブル、準備、実行)に似ていますが、宣言型言語ではなくアルゴリズム型言語を使用するため、それほど醜いものであってはなりません。
>これが実際に必要な状況を見てみたいと思います。