2016-08-03 51 views
-2

我试着使用更新设置像上面,我尝试不同的语法,但没有成功更新设置为从选择错误语法

update 
pc_discount 
set 
ceza_ucret_turu_id=pc_discount_ceza.CEZA_ALT_UCRET_KODU 
from 
(select CEZA_ALT_UCRET_KODU from pc_discount_ceza where CEZA_ALT_UCRET_KODU is not null) pdc 
where 
pc_discount.id=pdc.discount_id 
ceza_ucret_turu_id is null 

第一次没有成功(SQL命令未正确结束)

MERGE INTO pc_discount pd 
    USING pc_discount_ceza pdc 
    ON pd.id = pdc.discount_id 
    AND pdc.CEZA_ALT_UCRET_KODU is not null 
    and pd.ceza_ucret_turu_id is null 
WHEN MATCHED THEN 
UPDATE 
    SET ceza_ucret_turu_id = pdc.CEZA_ALT_UCRET_KODU 

再次失败(缺少ON关键字)

是否有任何建议来运行那种sql?

编辑:

update 
pc_discount 
set 
ceza_ucret_turu_id=pdc.CEZA_ALT_UCRET_KODU 
from 
(select CEZA_ALT_UCRET_KODU from pc_discount_ceza where CEZA_ALT_UCRET_KODU is not null) pdc 
where 
pc_discount.id=pdc.discount_id and 
ceza_ucret_turu_id is null 

依然没有改变。

+0

没有子查询返回任何结果从pc_discount_ceza'选择CEZA_ALT_UCRET_KODU CEZA_ALT_UCRET_KODU不为空吗? –

+0

是许多结果。 – Furkan

回答

1

有一对夫妇的事情,我会改变

  • 有两个条件,他们需要一个“和” SET加盟应该
  • 使用表的别名在集合
  • 添加加盟条件设定为子查询

尝试像

update 
    pc_discount 
set 
    ceza_ucret_turu_id = pcd.CEZA_ALT_UCRET_KODU 
from 
    ( 
    select 
     discount_id, 
     CEZA_ALT_UCRET_KODU 
    from 
     pc_discount_ceza 
    where 
     CEZA_ALT_UCRET_KODU is not null 
) pcd 
where 
    pc_discount.id = pcd.discount_id and 
    pc_discount.ceza_ucret_turu_id is null 
+0

...刚刚重读了这个问题并编辑了答案 –

+0

它强调了第一个'FROM'关键字 – Furkan

+0

@Furkan,为什么不向我们展示你的表格? –

-1

试试这个 - 我不知道你使用正确的语法用于Oracle

UPDATE pc_discount pd 
SET ceza_ucret_turu_id = 
(SELECT 
    MAX(ceza_alt_ucret_kodu) 
    FROM 
    pc_discount_ceza pdc 
    WHERE pd.id = pdc.discount_id 
) 
WHERE pd.ceza_ucret_turu_id IS NULL 
; 

以上已与新的业务规则更新

+0

[错误]执行(62:3):ORA-01427:单行子查询返回多个行 – Furkan

+0

感谢您标记 - 但子查询来自您 - 我看不到您的数据所以我不知道你的主键。而不是标记我的答案,你怎么提供更多的信息,所以我可以提供帮助。我的第一行仍然存在 - 您使用的语法错误 –