2012-06-30 27 views
12

He visto muchas publicaciones sobre esto en SO. Pero no pude obtener una respuesta. Quiero que la consulta compruebe si existe una fila en particular o no en una tabla. Si existe, debería devolverme una cadena true y detener la búsqueda allí mismo y si no es devuelto falso.Comprueba si existe una fila o no en postgresql

+3

hay una coma que falta en su consulta. – wildplasser

+1

¿Qué has probado? ¿Cómo se especifica la fila? ¿Por rowid o los valores de todos los atributos? ¿Tiene que ser una consulta o también es aceptable una función PL/SQL? – toniedzwiedz

Respuesta

35
select 
    case when exists (select true from table_name where table_column=?) 
    then 'true' 
    else 'false' 
    end; 

Pero sería mejor simplemente volver booleana en lugar de cadena:

select exists (select true from table_name where table_column=?); 
-11

Spoiler:

-- EXPLAIN ANALYZE 
WITH magic AS (
     WITH lousy AS (SELECT * FROM one WHERE num = -1) 
     SELECT 'True'::text AS truth 
     WHERE EXISTS (SELECT * FROM lousy) 
     UNION ALL 
     SELECT 'False'::text AS truth 
     WHERE NOT EXISTS (SELECT * FROM lousy) 
     ) 
SELECT * 
FROM magic 
     ; 
+1

Esto es demasiado complicado. – Tometzky

+0

Fue pensado como un alerón. El OP definitivamente es tarea y no muestra ningún esfuerzo. – wildplasser

+8

Lo que escribiste es un galimatías incluso para mí. No es tutor dando un ejemplo deliberadamente ofuscado que funciona pero [The Daily WTF] (http://thedailywtf.com/) digno. Por ejemplo, podría apuntar a la documentación de 'case' y' exists', ya que es útil solo para alguien que sabe qué buscar. – Tometzky

Cuestiones relacionadas