求大神指點,sql那里錯啦。查不出資料,謝謝
MERGE INTO TMP3B90C8C7F05911E79701005056F T1
USING(SELECT T3.FDATAVALUE AS FDATAVALUE ,T2.FENTRYID AS FENTRYID FROM T_SAL_ORDERENTRY T2
LEFT JOIN T_BAS_ASSISTANTDATAENTRY_L T3 ON T2.F_PAEZ_ASSISTANT=T3.FENTRYID) T4
ON (T1.FORDERID=T4.FENTRYID)
WHEN MATCHED THEN
UPDATE SET T1.FLYC_Text=T4.FDATAVALUE
WHEN NOT MATCHED THEN
INSERT (T1.FLYC_Text) VALUES (NULL);
uj5u.com熱心網友回復:
一個DML陳述句,要顯示什么資料?uj5u.com熱心網友回復:
就是把t4查詢出來的某個欄位值更新到t1中的某個欄位,符合條件的就更新,不符合條件的更新為空值
uj5u.com熱心網友回復:
報什么錯?貼下uj5u.com熱心網友回復:
你這個正好就是 不加 exists 的 update 全表uj5u.com熱心網友回復:
以下為報錯資訊,各位大神麻煩指點,謝謝
“Kingdee.BOS.SQL.Exception.ParserException”型別的例外在 Kingdee.BOS.SQL.dll 中發生,但未在用戶代碼中進行處理
其他資訊: parse error. detail message is :
Error: expect token <Punctuation,)>, but current token is <Punctuation,.>, at line 9, column 13)
source sql is :
MERGE INTO TMP10356E36F08111E7AC14B88198B A
USING (SELECT t1.FENTRYID as FENTRYID,t2.FDATAVALUE as FDATAVALUE
FROM T_SAL_ORDERENTRY t1
left join T_BAS_ASSISTANTDATAENTRY_L t2 on t2.FENTRYID=t1.F_PAEZ_ASSISTANT)B
ON (B.FENTRYID=A.FORDERID)
WHEN MATCHED THEN
UPDATE SET A.FLYC_Text=B.FDATAVALUE
WHEN NOT MATCHED THEN
INSERT (T1.FLYC_Text) VALUES ('');
uj5u.com熱心網友回復:
你應該把這個陳述句連上資料庫執行一下看報什么錯誤。從你的報錯上看來,這并不是資料庫上的錯誤。
uj5u.com熱心網友回復:
你把這句話放到plsql中執行,看看可以不uj5u.com熱心網友回復:
執行報錯
訊息 10739,級別 15,狀態 1,第 17 行
MERGE 陳述句中使用的插入列串列中不能包含多部分識別符號。請改用單部分識別符號。
uj5u.com熱心網友回復:
去掉這2句后可以執行啦,但是我需要在不符合ON后面的條件是,將T1.FLYC_Text的值設定為默認的值,此時以下陳述句報錯,請教如何改,謝謝
WHEN NOT MATCHED THEN
INSERT (T1.FLYC_Text) VALUES ('');
uj5u.com熱心網友回復:
到底沒有匹配到的時候是“更新為空值”?還是“設定為默認的值”???如果像你陳述句里寫的那樣,想插入一個空值,這是沒有意義的事情,插入一個空行算什么意思? 如果設定為默認值(當前前提是你設定了該欄位的默認值),那么就直接:
INSERT (FLYC_Text) VALUES (DEFAULT);
uj5u.com熱心網友回復:
想設定為沒有匹配的設定為默認值
即為:INSERT (FLYC_Text) VALUES (正常); 這樣寫也會報錯
訊息 10739,級別 15,狀態 1,第 17 行
MERGE 陳述句中使用的插入列串列中不能包含多部分識別符號。請改用單部分識別符號。
uj5u.com熱心網友回復:
INSERT (FLYC_Text) VALUES ('正常');
字串要用單引號引起來
uj5u.com熱心網友回復:
試過啦,沒有用,還是一樣的,謝謝uj5u.com熱心網友回復:
教你一個方法,把select簡化一下,先驗證merge into ... when的結構是否正確使用,uj5u.com熱心網友回復:
Merge都沒搞清楚,Insert部分你想插入什么資料?NULL。。。每一個不匹配就插入一個NULL,為了最后數有多少個?T1沒有主鍵且都允許為空的話可能不會報錯,但是不會有這樣的寫法,把T4中不匹配的KEY值插入到T1中會更有意義,
Update部分和Insert部分都應該用到T4的,否則你這Merge的合理性就很值得懷疑。
你先撇開Merge分步把邏輯設計出來,再考慮是否適用于Merge吧,
隱約的感覺著你是想分兩種case執行Update,沒有Insert的需求
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/74930.html
標籤:開發
上一篇:請教一個查詢優化的問題
