sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man gör SQL Server CE-tabelluppdatering från en annan tabell

Ditt andra försök fungerar inte eftersom, baserat på Books On-Line-posten för UPPDATERING , SQL CE tillåter inte en FROM klausul i en uppdateringssats.

Jag har inte SQL Compact Edition att testa den på, men det här kanske fungerar:

UPDATE JOBMAKE
SET WIP_STATUS = '10sched1'
WHERE EXISTS (SELECT 1
              FROM JOBVISIT AS JV
              WHERE JV.JBT_TYPE   = JOBMAKE.JBT_TYPE
              AND   JV.JOB_NUMBER = JOBMAKE.JOB_NUMBER
              AND   JV.JVST_ID    = @jvst_id
             )

Det kan vara så att du kan alias JOBMAKE som JM för att göra frågan något kortare.

REDIGERA

Jag är inte 100% säker på begränsningarna för SQL CE eftersom de relaterar till frågan som ställs i kommentarerna (hur man uppdaterar ett värde i JOBMAKE med ett värde från JOBVISIT). Att försöka hänvisa till innehållet i EXISTS-satsen i den yttre frågan stöds inte i någon SQL-dialekt jag har stött på, men det finns en annan metod du kan prova. Detta är opröstat men kan fungera, eftersom det ser ut som att SQL CE stöder korrelerade underfrågor:

UPDATE JOBMAKE 
SET WIP_STATUS = (SELECT JV.RES_CODE 
                  FROM JOBVISIT AS JV 
                  WHERE JV.JBT_TYPE = JOBMAKE.JBT_TYPE 
                  AND   JV.JOB_NUMBER = JOBMAKE.JOB_NUMBER 
                  AND   JV.JVST_ID = 20
                 )

Det finns dock en begränsning. Den här frågan kommer att misslyckas om mer än en rad i JOBVISIT ställs om för varje rad i JOBMAKE. Om detta inte fungerar (eller om du inte enkelt kan begränsa den inre frågan till en enda rad per yttre rad), skulle det vara möjligt att utföra en rad-för-rad-uppdatering med hjälp av en markör.




  1. Lägger till summa från 2 olika tabeller

  2. dereferencing postgres 2d array

  3. PHP-varning:mysqli_connect():(HY000/2002):Anslutning nekad

  4. MySQL, två tabeller som visar information från båda tabellerna