来自不同表的更新语句

时间:2014-10-01 16:48:22

标签: sql oracle sql-update multiple-tables

所以我一直在搜索其他类似的问题,但我似乎无法让它进行处理。我一直收到错误ORA-01427: single-row subquery returns more than one row.我知道我已经把我的2张桌子放到了where子句的某个地方,但我很挣扎。

PRICE_LIST

 brand_id (null)
 upc (populated)

upc_list

brand_id (populated)
upc (popualted)

用于提取null brand_ids列表的SQL

SELECT DISTINCT ul.brand_id
FROM price_list pl,
  upc_list ul
WHERE ul.upc     = pl.upc
AND ul.upc_type  = 'p'
AND pl.brand_id IS NULL ;

我的更新查询:

  UPDATE pricelist
  SET pl.brand_id =
    (SELECT DISTINCT ul.brand_id
    FROM pricelist,
      upc_list
    WHERE ul.upc     =pl.upc
    AND ul.upc_type  = 'I'
    AND pl.brand_id IS NULL
    )

其中(不确定要输入什么。有或没有它,它仍然给出上面的错误)

请帮助

2 个答案:

答案 0 :(得分:0)

相关 更新查询。

请注意,我添加了ROWNUM <= 1,以便subquerybrand_id个匹配项不止一个时upc返回一个UPDATE pricelist pl SET pl.brand_id = ( SELECT ul.brand_id FROM upc_list ul WHERE ul.upc = pl.upc AND ul.upc_type = 'I' AND ROWNUM <= 1 ) WHERE pl.brand_id IS NULL;

{{1}}

答案 1 :(得分:0)

请求您显示查询结果以帮助您进一步。

以下查询将为执行更新语句的upc_type ='I'提取NULL品牌ID。

SELECT DISTINCT ul.brand_id
FROM pricelist,
  upc_list
WHERE ul.upc     =pl.upc
AND ul.upc_type  = 'I'
AND pl.brand_id IS NULL

谢谢&amp;问候, 苛刻