sql
  • mysql
  • 2010-10-30 9 views 9 likes 
    9

    Encontré preguntas similares con las respuestas correctas. Pero son un poco complicados para mí. Solo quiero una declaración básica simple.Actualizar y seleccionar en una consulta

    tengo:

    string sql = "UPDATE tblPopUp 
           SET PopUp = 'False' 
           WHERE DisplayNo = 1" 
    

    ... y:

    string sql1 = "SELECT Period 
           FROM tblPopUp 
           WHERE DisplayNo = 1" 
    

    ¿Cómo puedo combinar?

    Respuesta

    13
    UPDATE tblPopUp 
    SET PopUp = 'False', Period = Period 
    OUTPUT DELETED.Period 
    WHERE DisplayNo = 1 
    

    Para obtener más información acerca de la cláusula OUTPUT compruebe this post.

    +0

    Creo que esto solo funciona en ciertas versiones de SQL, nada en MySQL, pero pude lograr algo como esto con SQL User Variables y multi-consultas –

    +1

    esto es increíble, me ha ahorrado un montón de tiempo y mecanografía. Ahora puedo marcar mis registros como en proceso por una instancia específica de mi aplicación de carga balanceada en una sola declaración que mantiene un bloqueo en los registros ... '' ' Actualizar arriba (5) [testdb_chetan]. [dbo]. [ tbl_ngic_recordings_master] Establecer ProcessingFlag = 'InProcessByInstance', ProcessAttempts = ProcessAttempts + 1 SALIDA INSERTADA. * Donde ProcessingFlag = 'UnProcessed' '' ' – Wjdavis5

    2

    No puede.

    No hay ninguna convención en una instrucción SQL UPDATE para devolver datos. Y viceversa: una instrucción SELECT no escribe información en una tabla.

    Si ha encontrado preguntas/respuestas que cree que son similares a las que desea, proporcione enlaces.

    +0

    Mañana. Conozco esta pregunta de MySQL, pero SQl Server tiene algo de este tipo. http://msdn.microsoft.com/en-us/library/ms177564.aspx No sé acerca de MySQL ... –

    +0

    @astander: Casi hora de acostarse aquí :) Ninguna cláusula OUTPUT o similar de la que tenga conocimiento en MySQL - Oracle (¿y PostgreSQL?) Tiene la cláusula RETURNING, que es muy similar a la cláusula OUTPUT de TSQL. Ninguno es ANSI, que yo sepa. –

    +0

    Agregado. Es DB específico X- (. Buenas noches. Ver más adelante ... –

    -1

    Trate Esta

    UPDATE tblPopUp 
          SET PopUp = 'False' 
          WHERE DisplayNo = '1' 
    (
    SELECT Period 
          FROM tblPopUp 
          WHERE DisplayNo = '1' 
    ) 
    
    0

    La forma correcta de hacerlo (ahora para MySQL 5+), sería con un procedimiento almacenado.

    Cuestiones relacionadas