내가 SQL에서 확인하실 수 있습니다 어떻게 값 2,3,6
배열이 쿼리의 하위 집합을 평가하는지 여부를 확인 하시겠습니까?
와 배열 I 행
사용자 WHERE에서SELECT ID ...
1
2
6
8
9
의 집합을했습니다 나는했습니다과 배열은 쿼리 결과의 하위 집합입니까?
내가 SQL에서 확인하실 수 있습니다 어떻게 값 2,3,6
배열이 쿼리의 하위 집합을 평가하는지 여부를 확인 하시겠습니까?
와 배열 I 행
사용자 WHERE에서SELECT ID ...
1
2
6
8
9
의 집합을했습니다 나는했습니다과 배열은 쿼리 결과의 하위 집합입니까?
SQL은 배열을 지원하지 않으므로 완전히 확신하지 못합니다. 어떻게 숫자 배열을 저장하고 있는데이 질문에 대답하는 가장 좋은 방법에 영향을 미칩니다. 말했다
, 나는이 작업을 수행 할 것 :
기본 쿼리SELECT u.id
FROM Users U
RIGHT JOIN Numbers N
ON U.id=N.Number
WHERE N.Number IN (2,3,6)
; 정확한 세부 정보는 오류를 감지하기 위해 수행 할 작업에 따라 달라집니다. u.ID가 NULL 인 모든 레코드는 하위 집합이 아님을 나타냅니다. 당신이 실제로 즉시 ID의 설정을하지 않을 경우 당신은> 0되었다 때마다 당신은 당신이 하위 집합이 없었 알 것
SELECT COUNT(*) AS Missing
FROM Users U
RIGHT JOIN Numbers N
ON U.id=N.Number
WHERE N.Number IN (2,3,6)
AND u.id IS NULL
하고, 그것을 수정할 수 있습니다. (SQL Server에서 적어도 int를 약간 캐스팅하여 0 = false,! 0 = true로 설정하면 응용 프로그램을보다 쉽게 사용할 수 있습니다.)
기타 자세한 내용은 당신은 실제로하려고 노력하고 있습니다. 그러나 희망적으로 그것은 기본적인 기술로서 의미가 있습니다.
(NB이 모두는 당신이 당신의 데이터베이스에서 숫자/집계 테이블을 가지고 있다고 가정합니다. 당신이 이미하지 않은 경우 그들은 내가 하나가 설정 얻을 것, 그래서 매우 유용하다.)
사용 Dynamic SQL는 :
당신은 개별적으로 각 레코드/항목을 확인해야declare @cmd varchar(200)
select @cmd = "select id from Users WHERE id in (" + @array + ")"
exec(@cmd)
아니,'IN' 절, 쿼리의 중복 다른 방법으로, 선택된 ID를 배열 한도에서 만드는 것입니다. –
2,3,6가 모두 테이블에 있는지 확인하고 싶습니까? 아니면 그들은 그 순서대로 존재 하는가? 정확히 무엇? –
이 목록이 최종 하위 집합인지 확인하려면 배열의 요소 수를 계산하고이 연산의 반환 세트 길이와 비교해야합니다. – eftpotrm
, 다음을 계산합니다.
JOIN이 배열과 동일한 크기이면 배열은 테이블의 하위 집합입니다. 당신은 당신이 할 수에 대해 테스트하는 데 필요한 값을 가진 하나 개의 컬럼 테이블을 채울 수 있다면 여기
는SELECT
COUNT(*)
FROM
Users
INNER JOIN
search
ON search.id = Users.id
HAVING
COUNT(*) = (SELECT COUNT(*) FROM search)
... 테이블에서 당신의 배열을 가정 한 예이다.
Select count(*)
From
(
Select id
From users
Intersect
Select id
From testValues
) test
카운트가 테스트 할 값의 수와 같으면 배열이 부분 집합을 형성합니다.
물론 이것은 여러분이 intersect로 SQL 변형을 사용하고 있다고 가정합니다. Dems의 솔루션은 모든 곳에서 작동해야합니다. –
가능 [집합이있는 모든 행 SQL 선택] (http://stackoverflow.com/questions/8425232/sql-select-all-rows-where-subset-exists) – onedaywhen