2013-05-28 5 views
1

При запуске скрипта появляется следующее сообщение об ошибке. Любая помощь будет оценена по достоинству.Подзапрос возвращает более 1 значения - SQL

Подзапрос возвратил более 1 значения. Это недопустимо, если подзапрос следует за =,! =, <, < =,>,> = или когда подзапрос используется как выражение.

Script

DROP TABLE ProductBase_TEMP 

GO 

SELECT  * 
INTO   ProductBase_TEMP 
FROM   PILOT.dbo.PART 

GO 

UPDATE ProductBase 
SET    CurrentCost = 
          (SELECT  ProductBase_temp.UNIT_LABOR_COST + ProductBase_temp.UNIT_BURDEN_COST + ProductBase_temp.UNIT_SERVICE_COST AS VISUAL_Cost 
          FROM   ProductBase INNER JOIN 
                ProductBase_temp ON ProductBase.ProductNumber = ProductBase_TEMP.ID COLLATE Latin1_General_CI_AI) 
WHERE  (ProductNumber COLLATE Latin1_General_CI_AI = 
          (SELECT  ProductBase_temp.ID 
          FROM  ProductBase_temp INNER JOIN 
              ProductBase ON ProductBase_temp.ID COLLATE Latin1_General_CI_AI = ProductBase.ProductNumber)) 

Благодаря

+2

Какая помощь вам нужна? Ошибка довольно понятна: подзапрос в предложении SET возвращает более одного значения, что недопустимо. – RBarryYoung

+1

На самом деле проблема также может быть в подзапросе предложения WHERE (ваше форматирование отбросило меня, я исправлю это ...). – RBarryYoung

ответ

0

Проблема заключается в стыки в ваших коррелированных подзапросов:

UPDATE ProductBase 
    SET CurrentCost = (SELECT ProductBase_temp.UNIT_LABOR_COST + ProductBase_temp.UNIT_BURDEN_COST + ProductBase_temp.UNIT_SERVICE_COST AS VISUAL_Cost 
         FROM ProductBase_temp 
         WHERE ProductBase.ProductNumber = ProductBase_TEMP.ID COLLATE Latin1_General_CI_AI 
        ) 
    WHERE (ProductNumber COLLATE Latin1_General_CI_AI = 
       (SELECT ProductBase_temp.ID 
       FROM ProductBase_temp 
       WHERE ProductBase_temp.ID COLLATE Latin1_General_CI_AI = ProductBase.ProductNumber 
      ) 
     ) 

Соединить является другой копией ProductBase таблицы, так что вы получая много и много строк (полный набор результатов). Вместо этого вы хотите скорректировать запрос на внешний ProductBase.

+0

Отлично! Спасибо за вашу помощь! – user2429298

Смежные вопросы