>source

임시 테이블 (#Result)에 데이터를 저장했습니다.

입력 매개 변수 인 경우 예를 들어 다른 정보를 표시 할 수 있습니다.

ListA 포함 :

ID        FirstName 
123       Peter
456       Ben
789       Eric

목록 B :

ID      FirstName 
123     Peter
888     Jack
999     Mary

목록 A와 목록 B를 모두 생성 할 때 FirstName, ID가 모두 나타나면 해당 FirstName의 세부 정보를 수행하는 방법 ID는 목록 B에서 제외되고 목록 A에만 표시됩니다 (중복 방지).

사용할 수있을 것 같아요 not exists 목록 B (123 Peter)를 삭제하는 방법과 동일한 임시 테이블을 비교하는 방법.

아래는 내 질문입니다! 감사합니다!

Alter proc [dbo].xxxxx
    @List varchar(5)
as
BEGIN
    SET NOCOUNT ON;
    CREATE TABLE #Result
    (
        iList char(1),
        [ID] nvarchar(100),
        [FirstName] nvarchar(100),
    )
    if @iList like '%A%'
    BEGIN
        insert into #Result
            Select 
                iList = 'A',
                [ID] = ab.[ID],
                FirstName = ab.[FirstName]
            from xxxx
    end
    if @iList like '%B%'
    BEGIN
        insert into #Result
            Select 
                iList = 'B',
                [ID] = ab.[ID],
                FirstName = ab.[FirstName]
            from xxxx
            where not exists (select 1 from #Result where b.id = a.id)<----(not sure);
    end
    select * from #Result
end

결과 기대

목록 A :

ID        FirstName 
123       Peter
456       Ben
789       Eric

목록 B

ID      FirstName 
888     Jack
999     Mary


  • 답변 # 1

    귀하의 SQL이 맞습니다. 아직도 이해할 수없는 의심은

    how to compare the same temporary table.

    데이터 세트에 대한 개념을 알아야한다고 생각합니다.
    데이터베이스는 테이블의 데이터를 직접 비교 (또는 사용)하지 않습니다. 테이블 스페이스 파일이라는 디스크에 데이터가 저장되어있는 테이블에서 데이터를 메모리로 가져옵니다. 데이터 세트는 SQL에서 데이터베이스 쿼리를 허용하는 데이터입니다.

  • 답변 # 2

    테이블 별칭을 이해하는 것이 좋습니다. 테이블의 별칭을 지정한 다음 별칭을 사용하여 해당 테이블을 참조합니다. 예를 들어 별칭이 xxxx 같이 X 그런 다음 사용 X 그때부터 그 테이블을 참조합니다. 그리고 하위 쿼리에서 다른 별칭으로 테이블 별칭을 지정해야합니다. R . 이제 가장 좋은 방법은 테이블 이름을 나타내는 문자를 사용하는 것입니다. XR 그러나 실제 테이블 이름에 맞게 변경해야합니다.

    insert into #Result (iList, ID, FirstName)
        select 
            iList = 'B',
            [ID] = X.[ID],
            FirstName = X.[FirstName]
        from xxxx X
        where not exists (select 1 from #Result R where R.id = R.id);
    
    

관련 자료

  • 이전 node.js - 오류 처리기 expressjs 미들웨어가 오류를 포착하지 못함
  • 다음 nltk - Python에서 함수에 대한 유효한 인수 목록을 검색 할 수 있습니까?