<p>La syntaxe dépend strictement du SGBD SQL que vous utilisez. Voici quelques façons de le faire en ANSI/ISO (c’est-à-dire qui devrait fonctionner sur n’importe quel SGBD SQL), MySQL, SQL Server et Oracle. Sachez que ma méthode ANSI/ISO suggérée sera généralement beaucoup plus lente que les deux autres méthodes, mais si vous utilisez un SGBD SQL autre que MySQL, SQL Server ou Oracle, cela pourrait être la seule solution possible (par exemple, si votre SGBD SQL ne prend pas en charge <code>MERGE</code>) :</p>
<p>ANSI/ISO :</p>
<pre><code class="lang-auto">update ud
set assid = (
select sale.assid
from sale
where sale.udid = ud.id
)
where exists (
select *
from sale
where sale.udid = ud.id
);
</code></pre>
<p>MySQL :</p>
<pre><code class="lang-auto">update ud u
inner join sale s on
u.id = s.udid
set u.assid = s.assid
</code></pre>
<p>SQL Server :</p>
<pre><code class="lang-auto">update u
set u.assid = s.assid
from ud u
inner join sale s on
u.id = s.udid
</code></pre>
<p>PostgreSQL :</p>
<pre><code class="lang-auto">update ud
set assid = s.assid
from sale s
where ud.id = s.udid;
</code></pre>
<p>Notez que la table cible ne doit pas être répétée dans la clause <code>FROM</code> pour PostgreSQL. Question principale : <a href="https://stackoverflow.com/questions/7869592/how-to-do-an-update-join-in-postgresql">Comment faire un update + join dans PostgreSQL ?</a></p>
<p>Oracle :</p>
<pre><code class="lang-auto">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
</code></pre>
<p>SQLite :</p>
<pre><code class="lang-auto">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
);
</code></pre>
<p>SQLite 3.33 a ajouté la prise en charge d’une syntaxe <code>UPDATE</code> + <code>FROM</code> analogue à celle de PostgreSQL :</p>
<pre><code class="lang-auto">update ud
set assid = s.assid
from sale s
where ud.id = s.udid;
</code></pre>
<p>Question principale : <a href="https://stackoverflow.com/questions/19270259/update-with-join-in-sqlite">Update avec Join dans SQLite</a></p>