加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 我可以在SQL Server中选择0列吗?

发布时间:2020-12-12 08:30:15 所属栏目:MsSql教程 来源:网络整理
导读:我希望这个问题比类似的 Create a table without columns好一点.是的,我问的是最有可能成为毫无意义的学术问题. 很容易产生具有0行(但是具有列)的SELECT结果,例如,SELECT a = 1 WHERE 1 = 0. 是否可以生成具有0列(但具有行)的SELECT结果?例如像SELECT NO COL
我希望这个问题比类似的 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提出任何建议.

解决方法

这是SQL的一个重要限制,也是SQL不是关系完整的一个原因.

您可能知道,Hugh Darwen为两个零度关系发明了名称DUM和DEE. SQL没有它们的等价物.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读