SQL에서 FOR XML PATH를 int 열로 사용할 수 있습니까? 그래서 내가 좋아하는 뭔가를 사용할 수 :SQL int 열의 xml 경로?
declare @contactIds = (select id from contacts)
다음이처럼 사용이 가능
select * from calls where contactId in (@contactIds)
인가?
SQL에서 FOR XML PATH를 int 열로 사용할 수 있습니까? 그래서 내가 좋아하는 뭔가를 사용할 수 :SQL int 열의 xml 경로?
declare @contactIds = (select id from contacts)
다음이처럼 사용이 가능
select * from calls where contactId in (@contactIds)
인가?
이게 원하는가요?
select *
from calls
where contactId in (select id from contacts);
내 생각 엔이 문제는 문제보다 더 복잡하다는 것이다, 그래서 이것은 정말 문제가 해결되지 않습니다
select @contactIds = stuff((select ','+cast(id as varchar(8000))
from contacts
for xml path('')
), 1, 1, '');
또한 직접 하위 쿼리 또는 테이블 변수를 사용할 수 있습니다.
나는 쿼리를 가져 왔습니다. 연락처 이름과 발신 전화 번호 및 수신 전화 번호를 표시합니다. 서브 쿼리를 사용하지만 실행하는 데 12 초가 걸리므로이를 개선하는 방법을 찾고 있습니다 ... –
실제로 쿼리를 개선 할 수있는 방법이있을 수 있습니다. 당신이 실제로하고있는 일에 대한 정보를 다른 * 질문에 던질 것을 제안 할 것입니다. 당신은'in' 문에'@ContactIds'를 사용할 수 없습니다 (당신이 원하는대로 할 수는 없습니다). –
변수의 ID 컬렉션을 저장하여 나중에 쿼리의 WHERE 절에서 사용할 수 있습니다. 임시 테이블을 사용하여이를 수행 할 수 있습니다. –
'@ contactIds'가 문자열이면 (FOR XML PATH를 사용하면됩니다), SQL은 해당 문자열의 내용을 검사하지 않고 쉼표를 찾은 다음 그 * single * 문자열을 마치 그 것처럼 취급하기로 결정합니다 실제로 IN()에 대한 여러 개의 * 분리 된 매개 변수였습니다.이 작업을 수행하는 언어는 모르겠으므로 사람들이 SQL을 사용하여 작업하려고 할 때 항상 놀랍습니다. –