2011-12-23 52 views
-1

我有这个查询,它工作得很好,问题是如果有一种方法可以使查询为NULL列值,如果它不存在于表中?SQL查询帮助,需要一些专家意见

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它不存在。

+0

的例子是不完整的。请提供示例表模式(作为CREATE TABLE语句),样例数据(作为INSERT INTO ... VALUES语句)和期望的结果。 – outis 2011-12-23 04:41:47

+1

并命名您的数据库系统。 – 2011-12-23 04:52:53

回答

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 
3
UPDATE a 
SET c1 = WO_CNT.RATE 
FROM PRD_WOCNT a 
LEFT JOIN WO_CNT b 
ON b.CNT = a.c1