none
SQL server - Update al registro de un SELECT

    Pregunta

  • Buen dia,

    me encuentro con la siguiente duda, yo realizo un SELECT a una tabla y traigo un registro.

    SELECT TOP 1 * FROM Persona WHERE EstadoContacto = 1

    pero inmediatamente se traiga ese registro necesito cambiar el estado de ese registro q trajo.

    UPDATE Persona SET EstadoContacto = 2 ......

    ese seria el UPDATE sencillo, pero no encontrado la forma de decirle que cambie de estado ese registro q se trajo.

    Gracias.

    viernes, 08 de junio de 2012 17:23

Respuestas

  • Si además del TOP pones un ORDER BY y nos indicas cuál es la clave primaria de esa tabla, sería una forma de hacerlo. Por ejemplo:

    SELECT TOP 1 * FROM persona WHERE EstadoContacto=1 ORDER BY <campo>
    
    UPDATE p
    SET EstadoContacto=2
    FROM persona p INNER JOIN (SELECT TOP 1 * FROM persona WHERE EstadoContacto=1 ORDER BY <campo>) AS d ON p.<clave primaria> = d.<clave primaria>

    • Marcado como respuesta RubenDsc viernes, 08 de junio de 2012 17:51
    viernes, 08 de junio de 2012 17:31

Todas las respuestas

  • Si además del TOP pones un ORDER BY y nos indicas cuál es la clave primaria de esa tabla, sería una forma de hacerlo. Por ejemplo:

    SELECT TOP 1 * FROM persona WHERE EstadoContacto=1 ORDER BY <campo>
    
    UPDATE p
    SET EstadoContacto=2
    FROM persona p INNER JOIN (SELECT TOP 1 * FROM persona WHERE EstadoContacto=1 ORDER BY <campo>) AS d ON p.<clave primaria> = d.<clave primaria>

    • Marcado como respuesta RubenDsc viernes, 08 de junio de 2012 17:51
    viernes, 08 de junio de 2012 17:31
  • hola Carlos,

    Funciono perfectamente, muchas Gracias.

    Buen dia.

    viernes, 08 de junio de 2012 17:51