2012-06-30 4 views
12

나는 이것에 관해 많은 게시물을 보았습니다. 그러나 나는 대답을 얻을 수 없었다. 테이블에 특정 행이 있는지 여부를 확인하는 쿼리를 원합니다. 존재하는 경우 문자열을 반환하고 거기에서 검색을 중지하고 false가 아닌 경우 false를 반환합니다.postgresql에 행이 있는지 확인하십시오.

+3

조회에서 누락 쉼표있다. – wildplasser

+1

무엇을 시도 했습니까? 행을 어떻게 지정합니까? rowid 또는 모든 속성의 값으로? 그것은 질의가되어야 하는가 아니면 PL/SQL 함수가 수용 가능한가? – toniedzwiedz

답변

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

하지만 그냥 문자열 대신 부울을 반환하는 더 나은 것 :

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

스포일러 :

-- 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

이것은 너무 복잡합니다. – Tometzky

+0

그것은 스포일러로 의도되었다. OP는 확실히 숙제이며 아무런 노력도 보이지 않습니다. – wildplasser

+8

당신이 쓴 것은 저에게조차도 횡설수설입니다. 당신은 [The Daily WTF] (http://thedailywtf.com/)에 합당하게 일하는 고의로 모호한 예를 제공하는 가정교사가 아닙니다. 예를 들어'case'와'exists'에 대한 문서를 가리킬 수 있습니다. 왜냐하면 그것은 무엇을 찾아야 할지를 아는 누군가에게만 유용하기 때문입니다. – Tometzky

관련 문제