代码之家  ›  专栏  ›  技术社区  ›  Brann

在SQL中返回空表的首选方法是什么?

sql
  •  10
  • Brann  · 技术社区  · 16 年前

    我知道我可以使用以下查询返回空表:

    select * from tbFoo where 1=2
    

    但那个代码在我看来并不好。

    是否有一种“标准”的方法来做到这一点?

    如果你想知道我为什么要做这么奇怪的事,那是因为 I can't name the datatables I return from a stored procedure ,所以我需要空的占位符。

    3 回复  |  直到 8 年前
        1
  •  28
  •   GateKiller    16 年前

    刚刚运行了两个:

    SELECT TOP 0 * FROM Table
    and
    SELECT * FROM Table WHERE 1=0
    

    他们制定了完全相同的执行计划。

        2
  •  1
  •   AnthonyWJones    16 年前

    大多数情况下,我看到1=0,但是的,当你真的必须这样做时,这几乎是标准方法。虽然真的很难得。

        3
  •  1
  •   garrow    16 年前

    information_schema ,使用它将允许您查找表的定义。

    information_schema Support in MySQL, PostgreSQL

    一个来自网站的例子;

    SELECT table_name, column_name, is_nullable, data_type, character_maximum_length
    FROM INFORMATION_SCHEMA.Columns
    WHERE table_name = 'employees'
    

    在您的情况下,您所需要的只是列名;

    SELECT column_name 
    FROM INFORMATION_SCHEMA.Columns
    WHERE table_name = 'employees'