插入另一个表匹配条件中的表值

时间:2014-05-23 18:37:12

标签: sql sql-server database

我有2个表(AllProducts)(Categories),某些产品可以有多个类别,因此我使用了第3个表(Product_Category)来处理这种多对多关系。

在我第一次设计数据库时,我为每个类别创建了一个表,并用产品名称填充它们(产品名称是唯一的)。

现在,我正在尝试将我之前创建的类别表中的数据插入到新表(Product_Category)中,因此我写了一个这样的查询:

INSERT INTO Product_Category(prodID,categoryID)
  SELECT
    (SELECT ID FROM AllProducts 
     WHERE ProductName IN(SELECT Products FROM Poltries))
   ,(SELECT 1)

但是我收到了这个错误:

  

子查询返回的值超过1。这是不允许的   子查询跟随=,!=,<,< =,>,> =或当子查询用作   表达。

我理解为什么我会收到错误,但我不知道如何写错误。

我想要的是:

(AllProducts)表中选择其名称位于Category_A table的每个产品的ID(在此示例中为' Polteries'),然后将此值插入column [prodID]然后在列(category ID)中插入常量值[categoryID]


任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:2)

试试这个

INSERT INTO Product_Category(prodID,categoryID)
SELECT ID, 1
FROM AllProducts 
WHERE ProductName IN (SELECT Products FROM Poltries)