Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách cập nhật bảng Sql Server CE từ một bảng khác

Lần thử thứ hai của bạn không hiệu quả vì dựa trên mục nhập Sách Trực tuyến để CẬP NHẬT , SQL CE không cho phép FROM mệnh đề trong một tuyên bố cập nhật.

Tôi không có SQL Compact Edition để kiểm tra, nhưng cách này có thể hoạt động:

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
             )

Có thể bạn có thể đặt bí danh JOBMAKE là JM để làm cho truy vấn ngắn hơn một chút.

CHỈNH SỬA

Tôi không chắc chắn 100% về các hạn chế của SQL CE vì chúng liên quan đến câu hỏi được nêu ra trong nhận xét (cách cập nhật giá trị trong JOBMAKE bằng cách sử dụng giá trị từ JOBVISIT). Cố gắng tham chiếu đến nội dung của mệnh đề EXISTS trong truy vấn bên ngoài không được hỗ trợ trong bất kỳ phương ngữ SQL nào mà tôi đã gặp, nhưng có một phương pháp khác mà bạn có thể thử. Điều này chưa được kiểm tra nhưng có thể hoạt động, vì có vẻ như SQL CE hỗ trợ các truy vấn con tương quan:

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
                 )

Tuy nhiên, có một hạn chế. Truy vấn này sẽ không thành công nếu nhiều hơn một hàng trong JOBVISIT được khôi phục cho mỗi hàng trong JOBMAKE. cập nhật từng hàng bằng con trỏ.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng PATINDEX để tìm các mẫu độ dài khác nhau trong T-SQL

  2. Có lỗi trong SqlDataReader.HasRows khi chạy với SQL Server 2008 không?

  3. Sự khác biệt giữa Chọn duy nhất và Chọn riêng biệt

  4. Chọn dữ liệu từ hai máy chủ khác nhau trong SQL Server

  5. tập lệnh lạ do SQL Server tạo ra khi xuất công việc