Pregunta

Tengo una instrucción UPDATE que está destinado a actualizar un campo de estado para un número limitado de registros. Aquí está la declaración:

UPDATE warehouse_box
SET warehouse_box_status_id = wbsv.warehouse_box_status_id
FROM
    warehouse_box_status_vw wbsv INNER JOIN
    pallet_warehouse_box pwb ON wbsv.warehouse_box_id = pwb.warehouse_box_id INNER JOIN
    routing_shipment_pallet rsp ON pwb.pallet_id = rsp.pallet_id
WHERE
    rsp.date_removed IS NULL
    AND pwb.date_unpalletized IS NULL
    AND rsp.routing_shipment_id = 100002

El resultado previsto es para las 6 registros que coinciden con la cláusula WHERE de haber actualizado sus estados. Lo que estoy viendo es que aunque todos los registros se actualizan 200.000 +. Es como si la cláusula WHERE se ignora por completo.

¿Alguien puede ayudar a arrojar algo de luz sobre esto para mí?

¿Fue útil?

Solución

Usted no tiene la warehouse_box tabla incluida en la cláusula FROM. Si se agrega warehouse_box y unirlo a warehouse_box_status debe resolver su problema.

Otros consejos

No parece estar en la selección warehouse_box en el WHERE y INNER JOINs - sólo desde otras mesas ...

¿Qué ocurre cuando se realiza un SELECT con la misma y hacia dónde cláusulas?

  • Si recibe todos los 200K filas, hay cosas que puede hacer para localizar el problema desde allí.

  • Si obtiene sólo los 6 registros que desea actualizar, es el momento de empezar a buscar los factores desencadenantes que podrían estar en proceso de actualizar toda la tabla.

Edit:. Se ve como los ojos más agudos ya han encontrado el problema

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top