복붙노트

[SQL] 어떻게 SQL 테이블을 '빼기'합니까?

SQL

어떻게 SQL 테이블을 '빼기'합니까?

그것 정말 내가 찾고 뺄셈. 그리고 나는 그것의 아닌 노동 조합 또는 교차 ... 나는 길고 복잡한 저장 프로 시저를 주어졌다 알고 반환 활성 및 비활성 문서의 테이블. 또한 단지 활성 문서에 포함 된 다른 테이블을 반환하는 유사한 저장 프로 시저를 주어졌다.

어떻게이 두 가지 저장 프로 시저를 사용하여 비활성 문서의 테이블을 얻을 수 있을까?

우리는 SQL 서버 2005을 사용하고 있습니다.

해결법

  1. ==============================

    1.당신이 찾고있는 세트 작업은 MINUS라고하지만, SQL Server의 키워드는 제외입니다

    당신이 찾고있는 세트 작업은 MINUS라고하지만, SQL Server의 키워드는 제외입니다

      SELECT ... // all documents
      EXCEPT
      SELECT ... // active documents
    

    나는 제외하고 설정 작업이 SQL Server 2005에서 사용 가능하게되었다 있다고 생각합니다.

  2. ==============================

    2.고유 ID가 가정되는 두 테이블에서 해당한다 :

    고유 ID가 가정되는 두 테이블에서 해당한다 :

    select * from table_both b
    where not exists (select * from table_active a where a.id = b.id)
    
  3. ==============================

    3.모든 좋은 답변,하지만 하나의 요점 : 질문자 (영업 이익) 저장 프로 시저를하고있다 ...

    모든 좋은 답변,하지만 하나의 요점 : 질문자 (영업 이익) 저장 프로 시저를하고있다 ...

    당신은 데이터를로드 (플랫폼에 따라) 임시 테이블을 정의해야

    INSERT ...
    EXEC getActive
    
    INSERT ...
    EXEC getInactive
    

    그런 다음 / EXISTS / 빼기 / IN / 외부 조인 / 등 EXCEPT 사용하여 ...

  4. ==============================

    4.

    SELECT * FROM Table1 
    LEFT JOIN Table2 on Table1.id = Table2.id
    WHERE Table2.id IS NULL
    

    이것은 거의 모든 데이터베이스 엔진에서 작동한다

  5. ==============================

    5.

    select * from MyTable1
    where MyTable1.Field1 not in (
      select Field1 from MyTable2)
    
  6. ==============================

    6.나는 당신이 찾고있는 경우를 제외하고 생각합니다. 구문은 UNION 또는 INTERSECT와 유사하다.

    나는 당신이 찾고있는 경우를 제외하고 생각합니다. 구문은 UNION 또는 INTERSECT와 유사하다.

  7. ==============================

    7.

    SELECT both.*
    FROM both LEFT OTUER JOIN inactives USING (whatever_id)
    WHERE inactives.whatever_id IS NULL;
    

    또는

    SELECT * FROM both
    EXCEPT
    SELECT * FROM inactives;
    
  8. ==============================

    8.당신의 DB 엔진은 무엇입니까?

    당신의 DB 엔진은 무엇입니까?

    오라클에서는 MINUS 집합 연산을 사용할 수 있습니다.

    MS의 SQLServer 2005 새로운에서는 제외 사용할 수 있습니다.

  9. ==============================

    9.MS TSQL에서, 나는 당신이 키워드 EXCEPT 싶은 생각합니다.

    MS TSQL에서, 나는 당신이 키워드 EXCEPT 싶은 생각합니다.

    query1 EXCEPT query2
    

    어떤 또한 두 번째 쿼리에없는 첫 번째 쿼리에있는 모든 행을 반환합니다.

  10. ==============================

    10.또한 NOT IN 절을 사용하여이 작업을 수행 할 수 있습니다

    또한 NOT IN 절을 사용하여이 작업을 수행 할 수 있습니다

    예를 들어, 프로 시저를 가정하면에게 @AllDocuments 및 @ActiveDocuments라는 변수 테이블을 부여하고 각 문서 DOCID라는 식별자 열이 한

    SELECT * FROM @AllDocuments 
    WHERE DocId NOT IN 
        (SELECT DocId FROM @ActiveDocuments)
    

    테이블 / 열 이름에 맞게 적절이 적응.

  11. ==============================

    11.

    SELECT roll_number FROM profile WHERE(catagory='Attest and Eat' or catagory='Live and Eat') and status='OK' EXCEPT SELECT roll_number from meal_status  WHERE date='29' AND month='1'
    

    당신은 다른 일에서 테이블을 뺄 명령의이 종류를 시도 할 수 있습니다.

  12. ==============================

    12.나는 다음과 같은 쿼리를 사용하고 세 개의 테이블 사이의 뺄셈을하는 경우 :

    나는 다음과 같은 쿼리를 사용하고 세 개의 테이블 사이의 뺄셈을하는 경우 :

    기본적으로 나는 3 표 ... 표 1, 표 2, 표 3 있습니다. 첫째로 나는 표 1과 표 2의 뺄셈을 수행 한 후 이전 쿼리 및 표 3의 결과 사이의 뺄셈을 수행했다.

    select v3.Material, ((v1.Qty-v2.Qty)-v3.Qty) as Quantity
      from table1 v1, table2 v2, table3 v3
     where (v1.Material=v2.Material
        and v1.Material=v3.Material
        and v2.Material=v3.Material)
    
  13. ==============================

    13.당신은 활성 및 비활성 및 반환 최초의 SP를 사용 할 수 있습니다 문서 상태 서포 넣어 조건이 비활성 = WHERE, 당신은 비활성 문서 만 가져 줘야 해.

    당신은 활성 및 비활성 및 반환 최초의 SP를 사용 할 수 있습니다 문서 상태 서포 넣어 조건이 비활성 = WHERE, 당신은 비활성 문서 만 가져 줘야 해.

  14. ==============================

    14.당신이 비율을 뺀 테이블을 업데이트하는 경우 이것을 사용

    당신이 비율을 뺀 테이블을 업데이트하는 경우 이것을 사용

    UPDATE `TABLENAME` SET `COLUMNNAME` = (50 / 100) * `COLUMNNAME`;
    

    참고 (1백분의 50)이이 경우에 때문에 50 %라고이 쿼리는 행의 총 가치에서 50 % 할인하겠습니다!

  15. from https://stackoverflow.com/questions/1373833/how-do-i-subtract-sql-tables by cc-by-sa and MIT license