FYI:--TABLE: A (ID,NAME,CID); --TABLE: B (ID,NAME); --TABLE: C (ID,NAME);-- 1ST WAY: UPDATE (SELECT B.NAME BNAME, C.NAME CNAME FROM A, B, C WHERE A.ID = B.ID AND A.CID = C.ID) SET CNAME = BNAME;
-- 2ND WAY: UPDATE C SET C.NAME = ( SELECT B.NAME FROM A, B WHERE A.ID = B.ID AND A.CID = C.ID ) WHERE EXISTS ( SELECT 1 FROM A, B WHERE A.ID = B.ID AND A.CID = C.ID );
首先感谢您的及时回答具体情况如下 --TABLE: A (PK0,PK1,PK3,PK1_B,ITEM_A_01,ITEM_A_02,ITEM_A_03); PK(PK0,PK1,PK3)实际情况是PK1 = PK1_B的 --TABLE: B (PK0,PK1,ITEM_B_01); PK(PK0,PK1) --TABLE: C (PK3,PK4,ITEM_C_01,ITEM_C_02,ITEM_C_03,ITEM_C_04); PK(PK3,PK4)情况是这样 A与B 相连(A.PK0 = B.PK0 AND A.PK1_B= B.PK1 A) 取得 ITEM_A_01,ITEM_A_02,ITEM_A_03(取得的可能是一条数据也可能是一批数据)
UPDATE (SELECT T501_AEON_ORDER.T501_WAREH_CD AS T501_WAREH_CD, T031_SHIPMENT_REQ_IMP_HIST.T031_WAREH_CD AS T031_WAREH_CD FROM T501_AEON_ORDER LEFT JOIN M029_DESTINATION ON T501_AEON_ORDER.T501_WAREH_CD = M029_DESTINATION.M029_WAREH_CD AND T501_AEON_ORDER.T501_OWNER_CD = M029_DESTINATION.M029_OWNER_CD AND RTRIM(T501_AEON_ORDER.T501_CUSTOM_CD2) = RTRIM(M029_DESTINATION.M029_CUSTOM_CD) AND RTRIM(T501_AEON_ORDER.T501_SHOP_CD) = RTRIM(M029_DESTINATION.M029_SHIP_TO_CD) AND M029_DESTINATION.M029_TRAN_KBN < '3' LEFT JOIN T031_SHIPMENT_REQ_IMP_HIST ON T501_AEON_ORDER.T501_SLIP_NO = T031_SHIPMENT_REQ_IMP_HIST.T031_SEND_NO) SET T031_WAREH_CD = T501_WAREH_CD这样会出现 01779的错误
-- A.PK3 = C.PK3 ? UPDATE (SELECT A.ITEM_A_01 "ITEM_A_01", A.ITEM_A_02 "ITEM_A_02", A.ITEM_A_03 "ITEM_A_03", C.ITEM_C_01 "ITEM_C_01", C.ITEM_C_02 "ITEM_C_02", C.ITEM_C_03 "ITEM_C_03" FROM A, B, C WHERE A.PK0 = B.PK0 AND A.PK1_B = B.PK1 AND A.PK3 = C.PK3) SET (ITEM_C_01, ITEM_C_02, ITEM_C_03) = (ITEM_A_01, ITEM_A_02, ITEM_A_03); UPDATE C SET (ITEM_C_01, ITEM_C_02, ITEM_C_03) = (SELECT ITEM_A_01, ITEM_A_02, ITEM_A_03 FROM A, B WHERE A.PK0 = B.PK0 AND A.PK1_B = B.PK1 AND A.PK3 = C.PK3) WHERE EXISTS (SELECT 1 FROM A, B WHERE A.PK0 = B.PK0 AND A.PK1_B = B.PK1 AND A.PK3 = C.PK3);如果存在多个值去更新一个字段的VALUE,这样会报错的。具体看你的需求了. GOOD LUCK!
FYI:--TABLE: A (ID,NAME,CID);
--TABLE: B (ID,NAME);
--TABLE: C (ID,NAME);-- 1ST WAY:
UPDATE (SELECT B.NAME BNAME,
C.NAME CNAME
FROM A,
B,
C
WHERE A.ID = B.ID
AND A.CID = C.ID)
SET CNAME = BNAME;
-- 2ND WAY:
UPDATE C
SET C.NAME = (
SELECT B.NAME
FROM A,
B
WHERE A.ID = B.ID
AND A.CID = C.ID
)
WHERE EXISTS (
SELECT 1
FROM A,
B
WHERE A.ID = B.ID
AND A.CID = C.ID
);
--TABLE: A (PK0,PK1,PK3,PK1_B,ITEM_A_01,ITEM_A_02,ITEM_A_03); PK(PK0,PK1,PK3)实际情况是PK1 = PK1_B的
--TABLE: B (PK0,PK1,ITEM_B_01); PK(PK0,PK1)
--TABLE: C (PK3,PK4,ITEM_C_01,ITEM_C_02,ITEM_C_03,ITEM_C_04); PK(PK3,PK4)情况是这样 A与B 相连(A.PK0 = B.PK0 AND A.PK1_B= B.PK1 A)
取得 ITEM_A_01,ITEM_A_02,ITEM_A_03(取得的可能是一条数据也可能是一批数据)
SET
ITEM_C_01 = ITEM_A_01
ITEM_C_02 = ITEM_A_02
ITEM_C_03 = ITEM_A_03
在此麻烦您了
T501_AEON_ORDER.T501_WAREH_CD AS T501_WAREH_CD,
T031_SHIPMENT_REQ_IMP_HIST.T031_WAREH_CD AS T031_WAREH_CD
FROM T501_AEON_ORDER
LEFT JOIN M029_DESTINATION ON T501_AEON_ORDER.T501_WAREH_CD = M029_DESTINATION.M029_WAREH_CD
AND T501_AEON_ORDER.T501_OWNER_CD = M029_DESTINATION.M029_OWNER_CD
AND RTRIM(T501_AEON_ORDER.T501_CUSTOM_CD2) =
RTRIM(M029_DESTINATION.M029_CUSTOM_CD)
AND RTRIM(T501_AEON_ORDER.T501_SHOP_CD) =
RTRIM(M029_DESTINATION.M029_SHIP_TO_CD)
AND M029_DESTINATION.M029_TRAN_KBN < '3'
LEFT JOIN T031_SHIPMENT_REQ_IMP_HIST
ON T501_AEON_ORDER.T501_SLIP_NO = T031_SHIPMENT_REQ_IMP_HIST.T031_SEND_NO)
SET T031_WAREH_CD = T501_WAREH_CD这样会出现 01779的错误
-- A.PK3 = C.PK3 ?
UPDATE (SELECT A.ITEM_A_01 "ITEM_A_01",
A.ITEM_A_02 "ITEM_A_02",
A.ITEM_A_03 "ITEM_A_03",
C.ITEM_C_01 "ITEM_C_01",
C.ITEM_C_02 "ITEM_C_02",
C.ITEM_C_03 "ITEM_C_03"
FROM A, B, C
WHERE A.PK0 = B.PK0
AND A.PK1_B = B.PK1
AND A.PK3 = C.PK3)
SET (ITEM_C_01, ITEM_C_02, ITEM_C_03) = (ITEM_A_01, ITEM_A_02, ITEM_A_03);
UPDATE C
SET (ITEM_C_01, ITEM_C_02, ITEM_C_03) = (SELECT ITEM_A_01,
ITEM_A_02,
ITEM_A_03
FROM A, B
WHERE A.PK0 = B.PK0
AND A.PK1_B = B.PK1
AND A.PK3 = C.PK3)
WHERE EXISTS (SELECT 1
FROM A, B
WHERE A.PK0 = B.PK0
AND A.PK1_B = B.PK1
AND A.PK3 = C.PK3);如果存在多个值去更新一个字段的VALUE,这样会报错的。具体看你的需求了. GOOD LUCK!
主键
倉庫コード T031_WAREH_CD
寄託者コード T031_OWNER_CD
取込ID T031_GET_ID
送信管理NO T031_SEND_NOM029_DESTINATION
主键
倉庫コード M029_WAREH_CD
寄託者コード M029_OWNER_CD
取引先コード M029_CUSTOM_CD
納入者コード M029_SHIP_TO_CDT501_AEON_ORDER
主键
倉庫コード T501_WAREH_CD
寄託者コード T501_OWNER_CD
取引先コード1 T501_CUSTOM_CD1
伝票番号 T501_SLIP_NO
行NO T501_LINE_NO