2011-03-30 4 views
2

내가 '가 lorem ipsum의'나는 함께 체인이 동작을하고 싶습니다SELECT EXISTS() 쿼리를 함께 연결하려면 어떻게해야합니까?

를 포함하는의 행이있는 경우 0 또는 1을 반환이 간단한 쿼리

SELECT EXISTS(SELECT a FROM A WHERE a = 'lorem ipsum'); 

있습니다. 그래서 나는 값이 존재한다면 각각 0이나 1로 여러 행을 얻을 것이다.

어떻게해야합니까?

업데이트 :

그것은 다음과 같이 그것을하는 것이 가능하지만 나는 각 결과에 대한 열을 얻는다.

SELECT EXISTS(SELECT a FROM A WHERE a = 'lorem ipsum'), EXISTS(SELECT a FROM A WHERE a = 'dolor sit'); 
+0

그것은 아침 8:30입니다, 내가 잘못 입력 할 수있어이 존재합니다 :) –

+0

당신은 테이블과 쿼리의 원하는 결과의 예를 추가 할 수 있을까요? – Michas

+0

나는 마틴 (대답)으로부터의 대답을 가지고 있다고 생각한다. –

답변

2
SELECT EXISTS(SELECT a FROM A WHERE a = 'lorem ipsum') 
UNION ALL 
SELECT EXISTS(SELECT a FROM A WHERE a = 'dolor sit'); 

또는

SELECT EXISTS(SELECT a FROM A WHERE A.a = T.a) 
FROM (SELECT 'lorem ipsum' AS a 
     UNION ALL 
     SELECT 'dolor sit') T 
+0

두 번째 예제에서는 이상한 오류가 계속 발생하지만 첫 번째 예제는 잘 보입니다. 이상한 UNION ALL 대 해결책 (내가 사용할 수있는 경우) –

+0

오류 : "연산 (= '')에 대한 잘못된 조합 (latin1_swedish_ci, IMPLICIT) 및 (utf8_general_ci, COERCIBLE)" "아마도 테이블 생성 된 테이블 A와 같은 데이터 정렬이 아닙니다. –

+0

명시 적 Collate 절을 추가 할 수 있습니까? 'COLLATE latin1_swedish_ci'. Microsoft SQL Server에서는'WHERE A.a = T.a COLLATE latin1_swedish_ci'라고 지정할 수 있습니다. MySQL의 구문과 배치가 같은지 확실하지 않습니다. –

0

는 SQL 서버가 편리해야하지만이 시도하지 마십시오

SELECT CASE WHEN EXISTS (...) THEN 1 ELSE 0 END 
UNION ALL 
SELECT CASE WHEN EXISTS (...) THEN 1 ELSE 0 END 
0

나는 이런 식으로 뭔가를 사용할 수 있습니다.

SELECT 
     CASE 
      WHEN a = 'lorem ipsum' THEN 1 
      WHEN a = 'dolor sit' THEN 1 
      ELSE 0 
     END AS something 
    FROM A; 
+0

이것은 쿼리의 결과뿐만 아니라 전체 테이블을 선택합니다. –