我希望这个问题比类似的创建一个没有列的表更好。是的,我在询问大多数人认为毫无意义的学术问题。
很容易生成一个SELECT结果,其行数为0(但具有列),例如
是否可能生成一个SELECT结果,其列数为0(但具有行)?例如
我遇到了这个问题,因为我想插入几行数据,而不指定任何行数据。例如(SQL Server 2005)。
很容易生成一个SELECT结果,其行数为0(但具有列),例如
SELECT a = 1 WHERE 1 = 0
。是否可能生成一个SELECT结果,其列数为0(但具有行)?例如
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.
可以在不指定任何列数据的情况下插入单行,例如:INSERT INTO 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的相关部分,但没有看到任何内容。我很惊讶在谷歌上也找不到任何信息。