sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan laver du SQL Server CE-tabelopdatering fra en anden tabel

Dit andet forsøg virker ikke, fordi baseret på Books On-Line-posten til OPDATERING , SQL CE tillader ikke en FROM klausul i en opdateringserklæring.

Jeg har ikke SQL Compact Edition til at teste den på, men dette kan måske virke:

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 være, at du kan kalde JOBMAKE som JM for at gøre forespørgslen lidt kortere.

REDIGER

Jeg er ikke 100% sikker på begrænsningerne ved SQL CE, da de relaterer til spørgsmålet i kommentarerne (hvordan man opdaterer en værdi i JOBMAKE ved hjælp af en værdi fra JOBVISIT). Forsøg på at henvise til indholdet af EXISTS-sætningen i den ydre forespørgsel understøttes ikke i nogen SQL-dialekt, jeg har stødt på, men der er en anden metode, du kan prøve. Dette er utestet, men kan virke, da det ser ud til, at SQL CE understøtter korrelerede underforespørgsler:

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
                 )

Der er dog en begrænsning. Denne forespørgsel vil mislykkes, hvis mere end én række i JOBVISIT genindstilles for hver række i JOBMAKE. Hvis dette ikke virker (eller du ikke ligefrem kan begrænse den indre forespørgsel til en enkelt række pr. ydre række), ville det være muligt at udføre en række-for-række-opdatering ved hjælp af en markør.




  1. Bedste praksis til at implementere sikker database til Android-enhed

  2. Mangler mysql.sock; giver Operational Error:(2002, Kan ikke oprette forbindelse til lokal MySQL-server gennem socket '/tmp/mysql.sock' (2))

  3. Send en liste over heltal fra C# til Oracles lagrede procedure

  4. ER-diagrammer i IRI Workbench