जाहिर है, आप (सरलीकृत) नहीं कर सकते
set t1.fieldA = (t2.fieldB, distance) --> you want to put two values into a single column
इसलिए, fieldB
get प्राप्त करें केवल उपश्रेणी से जो विश्लेषणात्मक कार्य का उपयोग करती है (row_number
) पंक्तियों को sdo_nn_distance(1) desc
. द्वारा "क्रमबद्ध" करने के लिए; फिर पहली पंक्ति का fieldB
. प्राप्त करें मूल्य।
कुछ इस तरह (मुझे आशा है कि मैंने कोष्ठक को सही रखा है):
UPDATE table1 t1
SET t1.fieldA =
(SELECT x.fieldB --> only fieldB
FROM (SELECT T2.fieldB, --> from your subquery
SDO_NN_DISTANCE (1) distance,
ROW_NUMBER ()
OVER (ORDER BY sdo_nn_distance (1) DESC) rn
FROM table1 T1, table2 T2
WHERE (sdo_nn (t1.geometry,
t2.geometry,
'SDO_NUM_RES=1',
1) = 'TRUE')) x
WHERE rn = 1) --> where RN = 1
WHERE EXISTS
(SELECT 1
FROM table2 t2
WHERE sdo_nn (t1.geometry,
t2.geometry,
'SDO_NUM_RES=1',
1) = 'TRUE'
AND ( t2.cell_name = 'string1'
OR t2.cell_name = 'string2')
AND t1.fieldA IS NULL);