, 당신은 (같은 무언가) 언급 할 수TSQL에이 쿼리 구문의 구현이 있습니까? 일부 SQL 언어에서
SELECT * FROM SomeTable WHERE (val1,val2) IN
(SELECT val1,val2 FROM SomeOtherTable)
을하지만 내가 사용하고있는 TSQL (SQL 서버 2K)에서 그렇게하는 방법을 모르겠어요.
조인 또는 연결된 값 (예 : )을 사용하는 등의 해결 방법을 알고 있지만 (지금은 사용 중임) TSQL에 일부 구문이 있습니까?
업데이트 : 이것은 유효한 SQL-99 구문이므로, 성능이 더 좋을지라도 조인은 해결 방법이라고 생각합니다. 제 질문은 아마도 다음과 같이 더 좋을 것입니다 :
TSQL에이 구문이 구현되어 있습니까?
UPDATE2 : 나는 방금이 구문 옴 Mysql을 테스트하고 잘 작동합니다.
나는 조인을 _workaround_를 사용하여 호출하지 않을 것이다. SQL 전문가는 아니지만 JOIN이 IN을 사용하는 것보다 훨씬 빠를 것이라고 확신합니다. – Rake36
@Rake : IN 절에 따라 다릅니다. 이 경우, 이들을 subselect로 분할하면 (실제로 행 필터링을 사용하면) 조인보다 속도가 느려집니다. – Eric
@Rake : SQL Server는 최적화 할 수 있습니다. 특별한 경우를 위해 특별히 설계된 특별한 SEMI JOIN 알고리즘이 있습니다. 그것은 후속 DISTINCT가있는 JOIN보다 빠릅니다. – Quassnoi