SQL查询帮助,需要一些专家意见

时间:2011-12-23 04:25:53

标签: sql

我有这个查询并且运行良好,问题是如果有一种方法可以使查询为NULL,如果表中不存在列值吗?

UPDATE PRD_WOCNT 
SET c1 = (
  SELECT WO_CNT.RATE FROM WO_CNT
  WHERE WO_CNT.CNT = PRD_WOCNT.c1
) 
WHERE EXISTS (
  SELECT WO_CNT.CNT FROM WO_CNT
  WHERE WO_CNT.CNT = PRD_WOCNT.c1
)

是的,它使用第二个表将销售代码的主表值更新为佣金率。但有时会输入表中不存在的销售代码,因此它会将销售代码添加为美元值,并使添加的总数错误。

我不太了解PHP,如果我可以简单地改变查询就不要理会它...它在黑暗中是一种刺痛,有一种感觉我需要在PHP方面这样做但是我不知道如何让我的查询告诉php它不存在。

2 个答案:

答案 0 :(得分:3)

UPDATE a
SET c1 = WO_CNT.RATE
FROM PRD_WOCNT a
LEFT JOIN WO_CNT b
ON b.CNT = a.c1 

答案 1 :(得分:0)

我没有被处决。我认为它会起作用。试试这个问题:

UPDATE PRD_WOCNT SET c1 = CASE
       WHEN EXISTS (
  SELECT WO_CNT.CNT FROM WO_CNT
  WHERE WO_CNT.CNT = PRD_WOCNT.c1
)
 THEN (
  SELECT WO_CNT.RATE FROM WO_CNT
  WHERE WO_CNT.CNT = PRD_WOCNT.c1
) 
       ELSE NULL
       END