sql >> データベース >  >> RDS >> Mysql

常にゼロの結果を返すSQLクエリはありますか?

    DBMSに応じて、次の1つ以上が機能します。

    • SELECT NULL LIMIT 0 (PostgreSQLおよびMySQL構文)/ SELECT TOP 0 1 (MS SQL Server構文)
    • SELECT NULL WHERE FALSE (ブール型のDBMS、例:PostgreSQL)SELECT NULL WHERE 1=0 (ほとんどのDBMS)

    Oracleの場合、これらはSELECT NULL FROM DUALの形式である必要があります。 、SELECTを使用することはできないので、私は信じています。 FROMなし ある種の節; LIMITのバージョンがわからない / TOP およびWHERE 受け入れます。

    より複雑なオプションは、(一時的な)テーブルを作成し、そのテーブルに行を挿入しないことです。これにより、値が含まれていなくてもタイプが関連付けられる列をいくつでも指定できます。

    -- PostgreSQL
    CREATE TEMP TABLE dummy ( a Int, b VarChar(42) );
    SELECT * FROM dummy;
    
    -- MS SQL Server
    CREATE TABLE #DUMMY ( a Int, b VarChar(42) );
    SELECT * FROM #DUMMY;
    

    PostgreSQLでは、列のないテーブルを作成することもでき、行と列がゼロの結果セットを作成できます。 :

    CREATE TEMP TABLE empty ();
    SELECT * FROM empty;
    

    もう1つの可能性は、DBMSにセットを返す関数がある場合、空のセットを返すことができる可能性があることです。たとえば、PostgreSQLでは、私が最もよく知っていることですが、 generate_series()

    SELECT * FROM generate_series(0,-1);
    


    1. MYSQL-制限によるグループ化

    2. Doctrine TEXTタイプを取得する方法は?

    3. 配列を1レベルずつネスト解除します

    4. 外部キー制約は、Oracleのクエリ変換に影響を与えますか?