2012-09-11 26 views
7

Estoy teniendo dos mesas¿Cómo se actualiza la columna en una tabla de otra tabla según la condición?

  1. tabla de alumnos que contiene (student_id, school_code, nombre, año, ...)
  2. mesa de la escuela
  3. que contiene (school_id, School_code, School_name, año etc ... ..)

Quiero actualizar la columna school_code en la tabla de estudiantes con la columna school_id en la tabla de códigos de la escuela según el código de la escuela y el año. Estoy teniendo datos de cinco años. así que school_id varía por cada año.

Mi consulta fue

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; 

Sin embargo, su falta de actualización. Recibo un error de subquery returns more than one value.

+0

Es debido a que está recibiendo más de un valor de 'schoo_id'. Y muestre su error completo. – hims056

+0

¿Alguna de las respuestas dadas no te ayuda? – hims056

+0

lo siento ... mi problema resuelto ... gracias a todos ustedes – Pavi

Respuesta

12

¿Por qué utilizar la sub consulta cuando puede hacerlo directamente?

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; 

Para más información ver 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

Intentar esta consulta

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 
Cuestiones relacionadas