-1

我有一个 SQL 问题。

我正在编写类似于此 SQL 语句的内容。

if object_id('G2Records') is not null
drop table g2records

WITH G2Records AS
 (
SELECT *
FROM table_A a
LEFT OUTER JOIN table_B ON A.id = B.table_A_Id
 )
SELECT identity(1,1) AS id, *
INTO table_c
FROM G2Records

SQL 给出了身份错误。

基本上,有没有办法将身份字段插入到我每次运行此 SP 时都会删除的表中?显然 table_c.id 会重置回来,这没关系。

但是我真的想要这样的东西的原因是因为 table_a 经常添加字段,所以我不想为 table_c 编写一个 CREATE 脚本,其中包含来自 table_a 和一些 _b 的确切字段,因为每次有人添加字段到 table_a 或 _b,我需要回到这个 SP 并修改。这不像其他部门在添加新字段时告诉我的那样。

身份字段仅用于我们正在进行的一些新开发,并且需要它。

SQL不必像我所拥有的那样,只要能完成我所要求的:)

提前致谢。

4

1 回答 1

4

函数的第一个参数IDENTITY()是数据类型,必须指定。文档中对此进行了明确概述,当您遇到错误和/或猜测语法但它不起作用时,它通常应该是您的第一个资源。在这里发布问题时,请不要说SQL gives errors,而是发布实际的错误消息。例如:

消息 102,级别 15,状态 1,第 5 行
“1”附近的语法不正确。

这似乎不是很有帮助,但具体比模糊要好得多。

尝试:

;WITH G2Records AS
(
  SELECT *
  FROM dbo.table_A AS a
  LEFT OUTER JOIN dbo.table_B AS b
  ON A.id = B.table_A_Id
)
SELECT IDENTITY(INT,1,1) AS id, *
----------------^^^ salient part right here
  INTO dbo.table_c
  FROM G2Records;
于 2013-08-16T17:22:42.127 回答