सिंटैक्स सख्ती से इस बात पर निर्भर करता है कि आप किस SQL DBMS का उपयोग कर रहे हैं। एएनएसआई/आईएसओ (उर्फ को किसी भी एसक्यूएल डीबीएमएस पर काम करना चाहिए), माईएसक्यूएल, एसक्यूएल सर्वर और ओरेकल में इसे करने के कुछ तरीके यहां दिए गए हैं। सलाह दीजिये कि मेरी सुझाई गई एएनएसआई/आईएसओ विधि आम तौर पर अन्य दो विधियों की तुलना में बहुत धीमी होगी, लेकिन यदि आप MySQL, SQL सर्वर, या ओरेकल के अलावा किसी अन्य SQL डीबीएमएस का उपयोग कर रहे हैं, तो यह जाने का एकमात्र तरीका हो सकता है (उदा। यदि आपका SQL DBMS MERGE
का समर्थन नहीं करता है ):
एएनएसआई/आईएसओ:
update ud
set assid = (
select sale.assid
from sale
where sale.udid = ud.id
)
where exists (
select *
from sale
where sale.udid = ud.id
);
MySQL:
u.id =s.udidset u.assid =s.assid परupdate ud u
inner join sale s on
u.id = s.udid
set u.assid = s.assid
SQL सर्वर:
update u
set u.assid = s.assid
from ud u
inner join sale s on
u.id = s.udid
पोस्टग्रेएसक्यूएल:
update ud
set assid = s.assid
from sale s
where ud.id = s.udid;
ध्यान दें कि लक्ष्य तालिका को FROM
. में दोहराया नहीं जाना चाहिए पोस्टग्रेज के लिए क्लॉज।
ओरेकल:
update
(select
u.assid as new_assid,
s.assid as old_assid
from ud u
inner join sale s on
u.id = s.udid) up
set up.new_assid = up.old_assid
SQLite:
update ud
set assid = (
select sale.assid
from sale
where sale.udid = ud.id
)
where RowID in (
select RowID
from ud
where sale.udid = ud.id
);