【发布时间】:2013-11-24 04:02:57
【问题描述】:
我是一名学生,正在学习 SQL Server,并使用管理工作室来规范化从单个表开始的数据库。
我现在有 80,000 行的 Table1,其中包含 ID、CategoryDescription 等...以及许多重复的 CateogoryDescriptions。
Table2 有一个包含所有 CategoryDescriptions 的列表和一个使用 SELECT DISTINCT 创建的 DescriptionID 列。它有大约 100 行。
我想将 Table2 中的 DescriptionID 值复制到表 1 中,以便删除大的 CategoryDescription 列并将其替换为查找表的链接。
以下生成预期数据(单列 80,000 个 id):
SELECT TEST.dbo.LU_ConNames.Con_ID
FROM TEST.dbo.LU_ConNames
JOIN TEST.dbo.MainTable
ON TEST.dbo.MainTable.CONCESSION = TEST.dbo.LU_ConNames.Con_Name
但是,当我添加 INSERT INTO...
INSERT INTO TEST.dbo.MainTable
SELECT TEST.dbo.LU_ConNames.Con_ID
FROM TEST.dbo.LU_ConNames
JOIN TEST.dbo.MainTable
ON TEST.dbo.MainTable.CONCESSION = TEST.dbo.LU_ConNames.Con_Name
我得到“列名或提供的值的数量与表定义不匹配。”澄清一下,MainTable 中没有名为 Con_ID 的列。我认为这可能是问题所在,但是当我添加一个(并验证相同的数据类型)时,我得到了同样的错误。
【问题讨论】:
-
你能不能试着给你的表和列命名更详细一点。哦,去掉下划线!
-
当然。他们是这样开始的,但我认为如果我让它们更通用(如建议的那样)会更有用。下划线是从我正在遵循的示例中复制的,但我明白你的意思。让打字更难。
标签: sql sql-server