Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wykonać aktualizację tabeli Sql Server CE z innej tabeli?

Druga próba nie działa, ponieważ na podstawie wpisu Książki online do aktualizacji , SQL CE nie zezwala na FROM klauzula w oświadczeniu aktualizacyjnym.

Nie mam programu SQL Compact Edition do testowania, ale może to zadziałać:

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
             )

Możliwe, że możesz użyć aliasu JOBMAKE jako JM, aby zapytanie było nieco krótsze.

EDYTUJ

Nie jestem w 100% pewien ograniczeń SQL CE, ponieważ odnoszą się one do pytania postawionego w komentarzach (jak zaktualizować wartość w JOBMAKE przy użyciu wartości z JOBVISIT). Próba odniesienia się do zawartości klauzuli EXISTS w zewnętrznym zapytaniu nie jest obsługiwana w żadnym dialekcie SQL, z którym się spotkałem, ale istnieje inna metoda, którą możesz wypróbować. To nie zostało przetestowane, ale może działać, ponieważ wygląda na to, że SQL CE obsługuje skorelowane podzapytania:

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
                 )

Istnieje jednak ograniczenie. To zapytanie zakończy się niepowodzeniem, jeśli więcej niż jeden wiersz w JOBVISIT zostanie zwrócony dla każdego wiersza w JOBMAKE.Jeśli to nie zadziała (lub nie możesz bezpośrednio ograniczyć wewnętrznego zapytania do jednego wiersza na wiersz zewnętrzny), możliwe byłoby wykonanie aktualizacja wiersz po wierszu za pomocą kursora.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. „Określone dane wejściowe nie reprezentują prawidłowego wystąpienia geograficznego” podczas korzystania z SqlGeographyBuilder

  2. Jak wyświetlić CAŁY tekst z ntext lub nvarchar(max) w SSMS?

  3. Jak uzyskać zlokalizowaną nazwę grupy Administratorzy Windows w Inno Setup?

  4. Nieprawidłowa nazwa kolumny błąd sql

  5. Usługi raportowania — nazwa grupy w nagłówku strony