쿼리의 WHERE 절에 사용될 결과 집합을 나타 내기 위해 변수를 사용하고 싶습니다.하위 연산자를 IN 연산자 내에서 사용할 변수로 설정
SELECT *
FROM Table1
WHERE
Exam1_ID IN (SELECT Id FROM Exam)
OR Exam2_ID IN (SELECT Id FROM Exam)
OR Exam3_ID IN (SELECT Id FROM Exam)
OR Exam4_ID IN (SELECT Id FROM Exam)
나는 그래서 쿼리를 계속 반복 할 필요는 없습니다 SELECT Id FROM Exam
대신에 변수를 사용하고 싶습니다. 변수 선언을 시도했지만 서브 쿼리의 결과에 여러 정수가 포함될 수 있으므로 변수를 선언하는 것이 확실하지 않습니다. 나는
DECLARE @SubQuery INT;
SET @SubQuery = (SELECT Id FROM Exam);
SELECT *
FROM Table1
WHERE
Exam1_ID IN (@SubQuery)
OR Exam2_ID IN (@SubQuery)
OR Exam3_ID IN (@SubQuery)
OR Exam4_ID IN (@SubQuery)
나는 다음과 같은 오류가 발생했습니다 ... 나서서 시도 ..
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
변수를 단일 값 대신 테이블로 선언 했습니까? –
변수를 INT로 선언했는데 문자 그대로 * an * (단수) int이므로 하나 이상의 값을 가질 수 없습니다. 당신이하고 싶은 것을하기 위해서, 당신은 값을'varchar'에 연결하고, 동적 인 SQL을 사용할 수 있습니다 (Rich Benner의 솔루션처럼 더 간단한 해결책이 있습니다). – HoneyBadger