【问题标题】:replacing a null column with data from a different column in a different table用来自不同表中不同列的数据替换空列
【发布时间】:2015-11-24 16:31:29
【问题描述】:

我有两张桌子

100 HL Road Frame   HL Road Frame - Black, 58   FR-R92B-58  Black   1431.50 1059.31 Road Frames 183 NULL
101 HL Road Frame   HL Road Frame - Red, 58 FR-R92R-58  Red 1431.50 1059.31 Road Frames 183 NULL
102 Sport-100   Sport-100 Helmet, Red   HL-U509-R   Red 34.99   13.09   Helmets 112 NULL
103 Sport-100   Sport-100 Helmet, Black HL-U509 Black   34.99   13.09   Helmets 112 NULL
104 Mountain Bike Socks Mountain Bike Socks, M  SO-B909-M   White   9.50    3.40    Socks   132 NULL

对于类别:

╔═══════╦═══════════════════╗
║     1 ║ Bib-Shorts        ║
║     2 ║ Bike Racks        ║
║     3 ║ Bike Stands       ║
║     4 ║ Bottles and Cages ║
║     5 ║ Bottom Brackets   ║
╚═══════╩═══════════════════╝

我正在尝试替换第一个表中的空值并使用第二个表中的类别 ID 填充它们,我认为插入语句会起作用,但它并没有像我想象的那样做我认为它会做的事情。

CREATE TABLE PRODUCTCATEGORY
(
    categoryID       INT IDENTITY(1, 1) CONSTRAINT pk_PRODUCTCATEGORY_category_ID 
    PRIMARY KEY,
    categoryname     VARCHAR(50)
) 

是桌子

ALTER TABLE product
    ADD categoryID INT
INSERT INTO product
SELECT categoryID
FROM   PRODUCTCATEGORY

我得到的错误是 Msg 213, Level 16, State 1, Line 18 列名或提供的值的数量与表定义不匹配。用于插入

感谢任何输入。

【问题讨论】:

标签: sql-server sql-server-2012 sql-insert


【解决方案1】:

你说的基本上是:

INSERT INTO product(id, short_name, long_name, model number, color, price,
          smaller_price, type_name, type_id, what_does_this_value_even_represent) VALUES
(1,'Bib-Shorts'), (2,'Bike Racks'), (3,'Bike Stands'), 
(4,'Bottles and Cages'), (5,'Bottom Brackets');

SQL 告诉你的是Msg 213, What value am I supposed to use for your 8 other columns

【讨论】:

  • 我试图通过使用该表中的 categoryID 并用该值替换另一个表中的空值来用 productcategory 中的值替换产品中的空值。如果这完全澄清了它
  • 那你不想insertvalues,你要updaterowsSETvalues。你应该检查 Juan 的答案,假设他猜对了你的结构,这个答案是有效的。
【解决方案2】:

更改表格后,您应该执行UPDATE

 UPDATE product P
 SET P.categoryID = PC.categoryID 
 FROM PRODUCTCATEGORY PC
 WHERE P.ID = PC.ID
   AND P.categoryID  IS NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多