sql >> Database >  >> RDS >> Oracle

Update-instructie met inner join op Oracle

Die syntaxis is niet geldig in Oracle. U kunt dit doen:

UPDATE table1 SET table1.value = (SELECT table2.CODE
                                  FROM table2 
                                  WHERE table1.value = table2.DESC)
WHERE table1.UPDATETYPE='blah'
AND EXISTS (SELECT table2.CODE
            FROM table2 
            WHERE table1.value = table2.DESC);

Of je misschien in staat zijn om dit te doen:

UPDATE 
(SELECT table1.value as OLD, table2.CODE as NEW
 FROM table1
 INNER JOIN table2
 ON table1.value = table2.DESC
 WHERE table1.UPDATETYPE='blah'
) t
SET t.OLD = t.NEW

Het hangt ervan af of de inline-weergave door Oracle kan worden bijgewerkt (Om voor de tweede instructie te kunnen worden bijgewerkt, hangt af van enkele regels die hier worden vermeld ).



  1. Rijen met dezelfde kolomwaarden retourneren in MySql

  2. Kolominfo ophalen voor een tabel of weergave in SQL Server (T-SQL:sp_columns)

  3. Tabel is 'alleen lezen'

  4. Hoe AppArmor te configureren voor PostgreSQL en TimescaleDB