我希望这个问题比类似的
Create a table without columns好一点.是的,我问的是最有可能成为毫无意义的学术问题.
很容易产生具有0行(但是具有列)的SELECT结果,例如,SELECT a = 1 WHERE 1 = 0.
是否可以生成具有0列(但具有行)的SELECT结果?例如像SELECT NO COLUMNS FROM Foo之类的东西. (这不是有效的T-sql.)
我遇到了这个,因为我想插入几行而不指定任何列数据.例如(sql Server 2005)
CREATE TABLE Bar (id INT NOT NULL IDENTITY PRIMARY KEY) INSERT INTO Bar SELECT NO COLUMNS FROM Foo -- Invalid column name 'NO'. -- An explicit value for the identity column in table 'Bar' can only be specified when a column list is used and IDENTITY_INSERT is ON.
可以插入单行而不指定任何列数据,插入Foo DEFAULT VALUES.
可以查询行数(不从表中检索实际列数据),SELECT COUNT(*)FROM Foo. (但结果集当然有一栏.)
我尝试过类似的东西
INSERT INTO Bar () SELECT * FROM Foo -- Parameters supplied for object 'Bar' which is not a function. -- If the parameters are intended as a table hint,a WITH keyword is required.
和
INSERT INTO Bar DEFAULT VALUES SELECT * FROM Foo -- which is a standalone INSERT statement followed by a standalone SELECT statement.
我能以不同的方式做我需要做的事情,但支持退化案例的明显缺乏一致性让我感到惊讶.
我仔细阅读了BOL的相关章节,没有看到任何内容.我很惊讶也没有通过Google提出任何建议.