【问题标题】:How to join tables easily Microsoft SQL Server?如何轻松连接表 Microsoft SQL Server?
【发布时间】:2010-07-29 08:48:00
【问题描述】:

我有两个用于类别的单独表格。

一个是Categories(ID, Title, Description),另一个是SubCategories(ID, UpperID, Title, Description)

我想将类别中的记录插入到upperID=0 的子类别中。我看过 SQL SELECT INTO,但不知道如何将它用于现有表。

【问题讨论】:

  • 您想维护类别的初始 ID 吗?如果是这样,它们是否不存在于 SubCategories 中?
  • 我想加入这些表,因为我希望能够为数据库中的另一条记录(如果它是工厂)设置类别或子类别 ID

标签: sql-server select-into sql


【解决方案1】:
Insert Into dbo.SubCategories (UpperId, Title, Description)

Select 0, Title, Description
From dbo.Categories

这假定两个表中的 ID 列都是 Identity 列,并且不应将 Categories 中的 ID 转移到 SubCategories 表中

【讨论】:

  • 添加到答案中,如果您也想传递 ID(并且它与现有密钥不冲突),请使用 SET IDENTITY_INSERT SubCategories ON
  • 我打算添加它,但由于我不是 100% 确定 OP 想要什么,我决定将其省略以避免混淆。不过,这仍然是一个很好的观点。
  • 使用:INSERT INTO dbo.Categories (UpperId, Title, Description) SELECT UpperID, Title, Description FROM dbo.SubCategories;因为子类别有来自类别的 ID,所以现在我不需要更改 catID :)
【解决方案2】:
INSERT INTO SubCategories(ID, UpperID, Title, Description)

SELECT ID, 0, Title, Description FROM Categories

假设 Id 不是 Identity 字段。

【讨论】:

  • -,这会给你一个 mssql 错误......!看看巴里的答案(语法正确)
  • 不......如果你在谈论身份,那么我已经解释过了。
  • 不...这与身份无关...这只是您的无效语法:INSERT INTO TABLE (Column1, Column2, ...) VALUES (SubSelect) 无效。它必须声明INSERT INTO TABLE (Column1, Column2, ...) SubSelect
猜你喜欢
  • 1970-01-01
  • 2013-12-06
  • 1970-01-01
  • 1970-01-01
  • 2020-11-07
  • 2014-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多