ゼロ行とゼロ列のデータセットを返す SELECT ステートメントを作成することはできますか?
5 に答える
データセットにデータが含まれていない場合でも、データセットには常に少なくとも 1 つの列があります。
SELECT NULL;
編集:
@eggyal で指摘されているように、上記の構文は null 行を返します。
彼のクエリselect null from dual where false;
は行を返しません。
私の意見では不可能です。少なくとも 1 つの列が表示されますが、行は表示されません。
Select null from yourTable where 1 = 2;
いいえ。ただし、行のないクエリを返すことは可能です。テーブルを参照せずにこれを行うには、サブクエリを使用できます。
SELECT NULL FROM (SELECT NULL) AS temp WHERE false;
このクエリには 1 つの (空の) 列がありますが、行はありません。
上記の構造は、場合によって異なるクエリがあり、その後に結果を反復処理するコード ループがあり、条件によってはループをスキップさせたい場合に使用しました。クエリを上記のものに置き換えると、空の結果が返され、if
ブロックなしでループがスキップされます。クエリにはテーブル名が含まれていないため、コードのその部分を変更する必要はありません。このためWHERE false
、既存のクエリのように条件を追加するよりも、この方法を好みます。
dual
PostgreSQL ではこの構成がサポートされていないため、より簡潔な参照よりもこの解決策を好みます。このソリューションは、サブクエリをサポートするすべてのバックエンドで機能します。
通常、既存のテーブルから空のテーブルを作成するために使用されます
CREATE TABLE NEW_TABLE_NAME AS
SELECT *
FROM EXISTING_TABLE_NAME
where 1=2