2012-06-30 23 views
12

Ho visto molti post su questo in SO. Ma non ho potuto ottenere una risposta. Voglio la query per controllare se esiste una particolare riga o meno in una tabella. Se esiste, dovrebbe restituirmi una stringa true e interrompere la ricerca lì e se non restituire false.Controlla se esiste una riga o meno in postgresql

+3

C'è una virgola mancante nella query. – wildplasser

+1

Cosa hai provato? Come si specifica la riga? Con rowid o i valori di tutti gli attributi? Deve essere una query o anche una funzione PL/SQL è accettabile? – toniedzwiedz

risposta

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

Ma sarebbe meglio tornare solo booleano invece di stringa:

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

Questo è troppo complicato. – Tometzky

+0

Era inteso come uno spoiler. L'OP è sicuramente compito a casa e non mostra alcuno sforzo. – wildplasser

+8

Quello che hai scritto è incomprensibile anche per me. Non ti istruisci fornendo un esempio volutamente offuscato che funziona, ma [The Daily WTF] (http://thedailywtf.com/) degno. Potresti ad esempio indicare la documentazione di 'case' e' exists', poiché è utile solo per qualcuno che sa cosa cercare. – Tometzky

Problemi correlati