es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilice WHERE NOT EXISTS en la misma tabla con clave primaria compuesta en Informix.

Tengo una tabla con una combinación de 5 campos en una base de datos Informix y necesito duplicar algunos valores y cambiar solo el campo rm_id. Esa parte ya está funcionando. El problema surge al intentar duplicarlo y ya existe una fila con estos 5 valores, lo que causa un error de violación de restricción única. Empecé a escribir una consulta para esto y hice esto:

SELECT *
FROM tabla t1
WHERE t1.rm_id = 249
AND NOT EXISTS (SELECT t2.prop, t2.rb_code, t2.bm_id, t2.bl, t2.rm_id
FROM tabla t2
WHERE t2.prop = t1.prop, t2.rb_code = t1.rb_code, t2.bm_id = t1.bm_id, t2.bl = t1.bl, t2.rm_id = t1.rm_id);

Recibí un error de sintaxis pero no puedo encontrar ningún problema con mi consulta; ¿Hay alguna manera de hacer algo así en Informix?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Es posible hacer algo así en Informix. El error de sintaxis que estás recibiendo probablemente se deba a una coma faltante entre las condiciones en la cláusula WHERE de la subconsulta. La siguiente consulta debería funcionar:

    SELECT *
    FROM table t1
    WHERE t1.rm_id = 249
    AND NOT EXISTS (SELECT t2.prop, t2.rb_code, t2.bm_id, t2.bl, t2.rm_id
    FROM table t2
    WHERE t2.prop = t1.prop AND t2.rb_code = t1.rb_code AND t2.bm_id = t1.bm_id AND t2.bl = t1.bl AND t2.rm_id = t1.rm_id);
    

Comments are closed.