Ver Mensaje Individual
  #2 (permalink)  
Antiguo 06/05/2018, 14:56
Avatar de vicram10
vicram10
 
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Poner limite y orden al update

realmente depende, pero seria de la siguiente forma

Código SQL:
Ver original
  1. UPDATE acceso_sala_solicitud
  2.     SET id_estado_oym = 1
  3.     WHERE codigo IN
  4.     (
  5.         SELECT DISTINCT(t1.codigo) FROM ACCESO_SALA_FECHAS t1 GROUP BY t1.codigo HAVING
  6.         (
  7.             (SELECT COUNT(codigo) FROM ACCESO_SALA_FECHAS WHERE codigo = t1.codigo) -
  8.             (SELECT COUNT(codigo) FROM ACCESO_SALA_FECHAS WHERE codigo = t1.codigo AND id_estado_oym = 2)
  9.         ) != 0
  10.     ) AND STATUSGO = 'APR'
  11.     AND ROWNUM <= 100;

aqui lo que haces es traer todas las coincidencias (IN) y decirle despues que solo 10 tenga en cuenta.
pero si lo que quieres es optimizado y no haga un recorrido por toda la tabla y luego recien haga el rownum entonces seria en la siguiente parte

Código SQL:
Ver original
  1. UPDATE acceso_sala_solicitud
  2.     SET id_estado_oym = 1
  3.     WHERE codigo IN
  4.     (
  5.         SELECT DISTINCT(t1.codigo) FROM ACCESO_SALA_FECHAS t1 WHERE ROWNUM <= 100 GROUP BY t1.codigo HAVING
  6.         (
  7.             (SELECT COUNT(codigo) FROM ACCESO_SALA_FECHAS WHERE codigo = t1.codigo) -
  8.             (SELECT COUNT(codigo) FROM ACCESO_SALA_FECHAS WHERE codigo = t1.codigo AND id_estado_oym = 2)
  9.         ) != 0
  10.     ) AND STATUSGO = 'APR';
__________________
Asunción Paraguay
Licenciado - Desarrollador Web - Lider de Proyecto/Desarrollador Banco Local
Espacio Geek - Comunidad Tecnologica