2012-09-11 25 views
7

Tôi gặp hai bảngLàm cách nào để cập nhật cột trong bảng từ một bảng khác dựa trên điều kiện?

  1. bảng sinh viên nó chứa (Student_id, school_code, tên, năm, ...)
  2. bảng trường
  3. nó chứa (school_id, School_code, School_name, năm vv ... ..)

Tôi muốn cập nhật cột school_code trong bảng học sinh với cột school_id trong bảng mã trường dựa trên mã trường và năm. i m có dữ liệu năm năm. do đó school_id thay đổi mỗi năm.

truy vấn của tôi là

UPDATE Master.Student 
    SET school_code=(select school_id from Master.school as sc 
    JOIN master.student as st 
    ON st.school_code=sc.school_code 
WHERE sc.year=x) 
WHERE st.year=x; 

Nhưng nó không được cập nhật. Tôi gặp lỗi subquery returns more than one value.

+0

Đó là bởi vì bạn đang nhận được nhiều hơn một giá trị của 'schoo_id'. Và hiển thị lỗi đầy đủ của bạn. – hims056

+0

Không có câu trả lời cụ thể nào giúp bạn? – hims056

+0

i m xin lỗi ... sự cố của tôi đã được giải quyết ... cảm ơn tất cả các bạn – Pavi

Trả lời

12

Tại sao nên sử dụng truy vấn phụ khi bạn có thể làm điều đó trực tiếp?

UPDATE st 
    SET st.school_code = sc.school_id 
FROM master.student AS st 
    JOIN Master.school AS sc 
ON st.school_code = sc.school_code 
WHERE sc.year=x 
    AND st.year=x; 

Để biết thêm thông Xem UPDATE (Transact-SQL)

1
UPDATE Master.Student 
SET school_code = sc.school_id 
from Master.school as sc 
where school_code=sc.school_code 
and year=x 
and st.year=x; 
1

Hãy thử truy vấn này

UPDATE student SET school_code = c.school_id 
FROM student t 
    INNER JOIN school c 
    ON t.school_code = c.school_code AND t.year = c.year 
WHERE c.year=x